On 19 Jan 2009, at 00:43, tatyree wrote:
>
> I''m trying to extend form_for to add a hidden field to certain
forms
> but not others. I realize that I need to push it on to the end of the
> &proc, but have yet to find an elegant way of doing it and was
> wondering if anyone had any insights?
>
> This is as close as I''ve come to doing it without having to copy
and
> paste the whole form_for method in to the else:
>
> module ActionView
> module Helpers
> module FormHelper
> def form_for_with_session_included(record_or_name_or_array,
> *args, &proc)
> if !bad_request?
> form_for_without_session_included(record_or_name_or_array,
> *args, &proc)
> else
> proc_with_session = Proc.new{ proc.call.concat
> (hidden_field_tag(:_session_id, session.session_id, :id => nil)) }
> form_for_without_session_included(record_or_name_or_array,
> *args, &proc_with_session)
> end
> end
> alias_method_chain :form_for, :session_included
> end
> end
> end
I would have thought something likw
form_for_without_session_included(record_or_name_or_array, *args) do |f|
hidden_field_tag ....
proc.call(f)
end
would have done the trick. Monkey patching this in seems a little
unnecessary. You could just as easily write a helper_called
my_form_for and call that when you want this extra behaviour
Fred>
>
> The problem seems to comes in in that the proc holds all the
> FormHelper fields. These expect to wake up inside the form_for object,
> so they do a lot of NoMethodError complaining when they get woken up
> like this.
>
> The only option that I''ve found that works is the aforementioned
> simian solution of copying the whole form_for method in to the else
> and adding an additional concat with my hidden_field. This just
> smells too strongly of future maintenance headache, and so I''d
like a
> much neater solution.
>
> I''m pretty new to procs beyond very simple usage, so any help or
> suggestions would be greatly appreciated.
>
> Thanks,
> Todd
>
> (Yes, that''s cookie-based sessions being overridden. Mobile phone
> browsers are the spawn of satan).
>
> >
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---