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