Form_for renders content block twice

Hi.

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.

Jarl

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
add test coverage showing fix for <% fields_for %> · willbryant/rails@1879760 · GitHub,
merged along with other fixes to
GitHub - willbryant/rails at 3-0-stable).

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.

Jarl

2012/6/6 Will B. [email protected]: