How to translate my inline form helper to form_for?

All,

In application_helper.rb, I have the following custom helper to let me
generate an inline form with one button:

  def inline_button(name, form_options = {}, button_options = {},
do_get=false)
    output = form_tag(form_options, {:style => "display: inline;",
:method => do_get ? 'get' : 'post'})
    output << submit_tag(name, button_options.merge(:name => ''))
    output << end_form_tag
  end

Currently, this works by generating a string which is pulled into the
calling view via <%= inline_button(...) %>.

How can I translate this into using form_for given that the form_for is
now an ERB block and not an interpolated string.

I'm close, and I have this:

  def inline_button(name, form_options = {}, button_options = {},
do_get=false)
    form_for(:dummy, :url => form_options, :html => {:style => "display:
inline;", :method => do_get ? 'get' : 'post'}) do
      submit_tag(name, button_options.merge(:name => ''))
    end
  end

but not sure what I need to do next.

Or do I need to create a custom form builder instead of trying to put
this inside of a helper method?

Thanks,
Wes

Isn't this exactly what button_to and button_to_function do?

Possibly. I need to recheck why I did this in the first place.

The Answer:

Since form_for implicitly writes to the "_erbout" variable via the
config method, the inline button method in my helper, which used to
generate a string which was included in the view using <%=
inline_button(...) %>, now simply takes a passed in output writer (from
the view) and manipulates it directly.

Method:

def inline_button(_erbout, name, form_options = {}, button_options = {},
do_get=false)
  form_for(:dummy, :url => form_options, :html => {:style => "display:
inline;", :method => do_get ? 'get' : 'post'}) do
    concat(submit_tag(name, button_options.merge(:name => '')), binding)
  end
end

A couple of things to notice:

1) The caller (a view) must call this using Ruby eval. tags, <%
inline_button(_erbout, ...) %>
2) The caller (a view) must pass the _erbout variable into the helper,
since both form_for() and concat() expect that variable to be in scope.
3) The parameter in inline_button _must_ be named _erbout for the same
reason as #2.
4) I'm not capturing the yielded form_builder from the call to form_for
because I don't need it.
So it's

  form_for() do
    ...
  end

instead of

  form_for() do |f|
    ...
  end

Wes