form_for renders content block twice.


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.


Does this only happen when running tests (if not then why mention the tests in the first place) or do you see it in the web browser when you go to the page.

Is it only one form that is doing this or are you seeing it in multiple places.

If you replace the contents of the form with just some simple text do you see it in the browser twice then?


This seems like a discussion better suited on rubyonrails-talk. I don’t see how it pertains to the core of the framework.

I don't know if this is the problem you're having, but does the form code in question use fields_for?

If so, we found there was a regression with that - kuahyeow fixed it in (test coverage added in, merged along with other fixes to

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 <h1>Hello</h1>, 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 %> <span>Create</span> <% 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.