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 -~----------~----~----~----~------~----~------~--~---