Hey all, trying to get a concept down. Or maybe the syntax. Here is the code: <p>Phones</p> <p><% @person.phones.each { |phone| %> <%= tag("input", "type" => "text", "id" => "phones[#{phone.id}][phone]", "name" => "phones[#{phone.id}][phone]", "value" => phone.phone) %> <%= phone.errors.on "phone" %><br/> <% } %></p> <p>Add new phone: (More phones can be added later)<br /> <input type="text" id="phones[new][phone]" name="phones[new][phone]" value=""> </p> What, exactly, is the [phone] in phones[#{phone.id][phone]? I know phones is the db phones. I know phone id is the PK (and for phones[new][phone]. What is phone though? Also, in phones[new][phone], what is new creating/doing? Similarly: def update @person = Person.find(@params["person"]["id"]) @person.attributes = @params["person"] if @person.save redirect_to :action => "show", :id => @person.id else render "person/edit" end end What is ["person"]? What is it referencing? Thanks. -- 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 -~----------~----~----~----~------~----~------~--~---
On 23 Sep 2008, at 21:17, Dave Lenhardt wrote:> > > What, exactly, is the [phone] in phones[#{phone.id][phone]? I know > phones is the db phones. I know phone id is the PK (and for > phones[new][phone]. What is phone though? Also, in phones[new] > [phone], > what is new creating/doing? >This is Rails parameter naming converion phones[#{phone.id}][phone] means that the corresponding input element will (in the controller) be at params[''phones''][''25''][''phone''] (assuming the id was 25). The ''new'' is presumably just a convention by whoever wrote this code to indicate a new record. I wrote some stuff up about this: http://www.spacevatican.org/2008/7/18/parametrised-to-the-max> Similarly: > > def update > @person = Person.find(@params["person"]["id"]) > > @person.attributes = @params["person"] > > if @person.save > redirect_to :action => "show", :id => @person.id > else > render "person/edit" > > end > end> What is ["person"]? What is it referencing? >Not sure what you''re asking about. params is just a regular hash, they''re pulling out the value with key "person"> Thanks. > -- > 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 -~----------~----~----~----~------~----~------~--~---
Ah, so basically foo[#{a}][b] is nothing more but Ruby conventional syntax for @params[''foo''][''#{a}][b] As for my other question...I think I understand it now, but I want to be sure and clarify something. def update @person = Person.find(@params["person"]["id"]) @person.attributes = @params["person"] if @person.save redirect_to :action => "show", :id => @person.id else render "person/edit" end end @person = Person.find(@params["person"]["id"]) @params["person"]["id"] could be person[#{id}]. Of course, Person.find is used because it will return a person record with the corresponding id. I am assuming that since Ruby can go from singular to plural, it is smart enough to know that People.find wants a single record that can only be found in the people db (as People represents multiple persons). Frederick Cheung wrote:> On 23 Sep 2008, at 21:17, Dave Lenhardt wrote: >> >> >> What, exactly, is the [phone] in phones[#{phone.id][phone]? I know >> phones is the db phones. I know phone id is the PK (and for >> phones[new][phone]. What is phone though? Also, in phones[new] >> [phone], >> what is new creating/doing? >> > This is Rails parameter naming converion > > phones[#{phone.id}][phone] means that the corresponding input element > will (in the controller) be at params[''phones''][''25''][''phone''] > (assuming the id was 25). > > The ''new'' is presumably just a convention by whoever wrote this code > to indicate a new record. > > I wrote some stuff up about this: > http://www.spacevatican.org/2008/7/18/parametrised-to-the-max >> render "person/edit" >> >> end >> end > >> What is ["person"]? What is it referencing? >> > > Not sure what you''re asking about. params is just a regular hash, > they''re pulling out the value with key "person"-- 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 -~----------~----~----~----~------~----~------~--~---
On 23 Sep 2008, at 21:50, Dave Lenhardt wrote:> > Ah, so basically foo[#{a}][b] is nothing more but Ruby conventional > syntax for > @params[''foo''][''#{a}][b] >sort of. it''s the parameter name that will make the parameters arrive in that way.> > > I am assuming that since Ruby can go from singular to plural, it is > smart enough to know that People.find wants a single record that can > only be found in the people db (as People represents multiple > persons). >Yes - rails knows that the table backing the Person class is people> Frederick Cheung wrote: >> On 23 Sep 2008, at 21:17, Dave Lenhardt wrote: >>> >>> >>> What, exactly, is the [phone] in phones[#{phone.id][phone]? I know >>> phones is the db phones. I know phone id is the PK (and for >>> phones[new][phone]. What is phone though? Also, in phones[new] >>> [phone], >>> what is new creating/doing? >>> >> This is Rails parameter naming converion >> >> phones[#{phone.id}][phone] means that the corresponding input element >> will (in the controller) be at params[''phones''][''25''][''phone''] >> (assuming the id was 25). >> >> The ''new'' is presumably just a convention by whoever wrote this code >> to indicate a new record. >> >> I wrote some stuff up about this: >> http://www.spacevatican.org/2008/7/18/parametrised-to-the-max >>> render "person/edit" >>> >>> end >>> end >> >>> What is ["person"]? What is it referencing? >>> >> >> Not sure what you''re asking about. params is just a regular hash, >> they''re pulling out the value with key "person" > > -- > 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 -~----------~----~----~----~------~----~------~--~---
> sort of. it''s the parameter name that will make the parameters arrive > in that way.Why does the param''s name allow it to arrive in that way? -- 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 -~----------~----~----~----~------~----~------~--~---
Sent from my iPhone On 24 Sep 2008, at 00:30, Dave Lenhardt <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org > wrote:> > >> sort of. it''s the parameter name that will make the parameters arrive >> in that way. > > Why does the param''s name allow it to arrive in that way?Because that''s what the bit of code parsins query strings/form data is looking for Fred> > -- > 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 -~----------~----~----~----~------~----~------~--~---