The form_for api docs have this example:
<% form_for :person, @person, :url => { :action => "update" }
do |f| %>
Can someone explain the function of :person and @person? I guess that @person
was set in the controller.
But then what is :person? Why do I need both?
--~--~---------~--~----~------------~-------~--~----~
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 form_for api docs have this example: > > <% form_for :person, @person, :url => { :action => "update" } do |f| %> > > Can someone explain the function of :person and @person? I guess that @person was set in the controller. > But then what is :person? Why do I need both?Try it and then view the source to see the result... using this example: <% form_for :person, @person, :url => { :action => "update" } do |f| %> First name: <%= f.text_field :first_name %> Last name : <%= f.text_field :last_name %> Biography : <%= f.text_area :biography %> Admin? : <%= f.check_box :admin %> <% end %> You''d end up with form names of: person[first_name] person[last_name] person[biography] person[admin] That takes care of :person. @person is what is used to populate those fields with default values.... -philip --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Uh... Weird. I''ve been using
form_for :model_name, :url => {:action => :whatever} do |f|
end
and it works fine. I don''t know how/why I started doing it this way but
it
does work. Does Edge Rails use form_for differently? Is @person designed so
you could use a different model there? I''m genuinely puzzled by this.
RSL
On 2/20/07, Philip Hallstrom
<rails-SUcgGwS4C16SUMMaM/qcSw@public.gmane.org>
wrote:>
>
> > The form_for api docs have this example:
> >
> > <% form_for :person, @person, :url => { :action =>
"update" } do |f| %>
> >
> > Can someone explain the function of :person and @person? I guess that
> @person was set in the controller.
> > But then what is :person? Why do I need both?
>
> Try it and then view the source to see the result... using this example:
>
> <% form_for :person, @person, :url => { :action =>
"update" } do |f| %>
> First name: <%= f.text_field :first_name %>
> Last name : <%= f.text_field :last_name %>
> Biography : <%= f.text_area :biography %>
> Admin? : <%= f.check_box :admin %>
> <% end %>
>
> You''d end up with form names of:
>
> person[first_name]
> person[last_name]
> person[biography]
> person[admin]
>
> That takes care of :person. @person is what is used to populate those
> fields with default values....
>
> -philip
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---
Russell Norris wrote:> Uh... Weird. I''ve been using > > form_for :model_name, :url => {:action => :whatever} do |f| > end > > and it works fine. I don''t know how/why I started doing it this way but > it > does work. Does Edge Rails use form_for differently? Is @person designed > so > you could use a different model there? I''m genuinely puzzled by this. > > RSLform_for allows you to use any object, not just an instance variable. This allows you to do something like: #some_view <% @foobars.each do |fb| <% form_for :foobar, fb %> <%= f.text_field :title %> <%= submit_tag ''Save Foobar!'' %> <% end %> <% end %> :foobar, is a string or symbol use to name the form fields. So when submitted, all form fields will be in params[:foobar]. The second argument, fb, is the object whose values will be shown in the form when the page loads. You can leave off the second argument: <% form_for :foo do |f| %> And the helper will assume you want an instance variable of the same name, so will use @foo for generating the default form values. So these two lines are the same: <% form_for :foo do |f| %> <% form_for :foo, @foo do |f| %> But the second allows you to do tricky things like: <% form_for :foo, my_crazy_local_var do |f| %> -- 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 -~----------~----~----~----~------~----~------~--~---