Forum: Ruby on Rails form_tag - howto call with self.send?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
753038ae16700c0fd9a5e1d2e80f68f6?d=identicon&s=25 Lee.Longmore@googlemail.com (Guest)
on 2008-12-18 10:07
(Received via mailing list)
I have the following code in a form helper Module:

  def form_tag_helper(options = {})
    url = url_for(:action => "#{@controller.action_name}")
    "#{self.send(:form_tag, url, options)}"
  end

which I call from several views e.g.

    <%= form_tag_helper %>
      <table>
        <%#= form_input :text_field, "login", :size => 30 %><br/>
        <%#= form_input :password_field, "password", :size => 30 %><br/
>
      </table>

      <div class="button-bar">
        <%#= button_helper 'login' %>
        <%#= link_helper 'login_signup', :action => 'signup' %>
        <%#= link_helper 'login_forgot_password', :action =>
'forgot_password' %>
     </div>

The code -- which I have modified from the SaltedHashLoginGenerator
(replace deprecated start_form_tag with form_tag) -- seems to generate
an html form correctly. I am however conscious that form_tag (when
used in the manner above) should have a do...end block surrounding the
form elements and the above code does not respect this.

I would appreciate any views on this and suggestions on how I might
add a do...end block.

Thanks!
Fdb5fc6183ee5e6651dc2ee3cdfdd016?d=identicon&s=25 mikebind (Guest)
on 2008-12-18 19:19
(Received via mailing list)
In Ruby, you can pass a block (a chunk of code) to a method call, and
then run that code by calling yield in the method.  This might be what
you need...  A caveat:  I'm pretty much a noob, so anything I say
might be wrong :)

This page looks like it might be helpful:
http://tutorial.jcwcn.com/Web-Design/Ruby-on-Rails...

Good luck!

On Dec 18, 1:07 am, "Lee.Longm...@googlemail.com"
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-12-18 19:40
(Received via mailing list)
On 18 Dec 2008, at 09:07, Lee.Longmore@googlemail.com wrote:

>
> I have the following code in a form helper Module:
>
>  def form_tag_helper(options = {})
>    url = url_for(:action => "#{@controller.action_name}")
>    "#{self.send(:form_tag, url, options)}"
>  end
>

I'd guess something along the line of
  def form_tag_helper(options = {}, &block)
    url = url_for(:action => "#{@controller.action_name}")
    form_tag( url, options, &block)
  end

and then use form_tag_helper as you would form_tag, ie

<% form_tag_helper do %>
...
<% end >


should do the trick

Fred
753038ae16700c0fd9a5e1d2e80f68f6?d=identicon&s=25 Lee.Longmore@googlemail.com (Guest)
on 2008-12-19 11:20
(Received via mailing list)
Thanks! That did do the trick :)
This topic is locked and can not be replied to.