I amn just upgrading a project from 2.3.12 to 3.0.11.
I have come pretty long, my unit tests succeeds, but my functional
tests also tests the views. There I experience that code like
<%= form_for(@order, :html => {:multipart => true}) do |f| %>
<% end %>
renders the content of the block twice, that means the stuff between
the do and end renders twive, not the formtag itself.
And yes it is intentionally that I use ‘<%=’ as this is how it should
be in Rails 3. I have tried to put a debug statement like
<%= form_for(@order, :html => {:multipart => true}) do |f| %>
<% debugger %>
<% end %>
That is only hit once… So somehow the output is buffered, and the
code block is apparently not invoked twice, just outputted twice.
Does anyone have a clue on why this happens? or where I should dig
further.
It happens also in development, the “test” was just some background
story (sorry)…
It happens to more or less all my forms.
If I replace the whole do block with just
Hello
, then things
works as expected (thanks for the tip, Colin).
It seems like my submit button that looks like this:
<%= f.submit_button :class => ‘button’ do %> Create
<% end %>
is the code that causes the problems.
I have code that uses f.fields_for but that apparently works fine as
long as the the submit button using the block style is removed.
I now see that the submit_button mehtod is a helper that I wrote
myself (I will debug that, and make it Rails3 compliant), thanks for
the help to all of you.