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
-- 
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Isn''t this exactly what button_to and button_to_function do? On Feb 22, 7:39 pm, Wes Gamble <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> 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 > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Possibly. I need to recheck why I did this in the first place. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I remember now. There''s no way with button_to* to change the styling of the form that the button is embedded in. Hence, "inline_button". WG -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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
-- 
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---