A probably noob-ish question about the restful urls, but I searched the groups archives and could not find it. IIUC, "GET /users/bob" should return a page showing information about the user identified with "bob", while "GET /users/new" returns a page with a form for creating a new user. Ain''t there an ambiguity there? Does that mean that I have to make sure that no user chooses "new" as his id? -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Thu, Jul 22, 2010 at 19:04, Éric Malenfant <eric.malenfant-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> A probably noob-ish question about the restful urls, but I searched > the groups archives and could not find it. > > IIUC, "GET /users/bob" should return a page showing information about > the user identified with "bob", while "GET /users/new" returns a page > with a form for creating a new user. > > Ain''t there an ambiguity there? Does that mean that I have to make > sure that no user chooses "new" as his id?If you retrieve them by name, yes, but usually what I''ve seen, especially with Rails, is retrieval by ID number. So, you''d have GET /users/23 or whatever, who may happen to be named Bob. Or if you want to get them by name, GET /users/search?name=bob, or maybe even /users/show?name=bob, or if the name isn''t unique, possibly /users/index?name=bob. -Dave -- Specialization is for insects. | Professional: http://davearonson.com -Robert Anson Heinlein | Programming: http://codosaur.us -------------------------------+ Leadership: http://dare2xl.com Have Pun, Will Babble! -me | Et Cetera: http://davearonson.net -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Éric Malenfant wrote:> A probably noob-ish question about the restful urls, but I searched > the groups archives and could not find it. > > IIUC, "GET /users/bob" should return a page showing information about > the user identified with "bob", while "GET /users/new" returns a page > with a form for creating a new user. > > Ain''t there an ambiguity there? Does that mean that I have to make > sure that no user chooses "new" as his id?If you use such "permalinks" to identify the individual resources instead of their primary key id, then you''ll need to make sure you add validation to make sure the resource URI is unique. "GET /users/new" is itself a resource identifier URI. It refers to the "New Form" resource. Similarly the "Edit Form" resource has the "GET /users/edit" identifier URI. Using the model''s simple integer primary key in the resource URI eliminates this issue. I''ve seen some people combine the id with a textual identifier to produce URI''s like "GET /users/1-bob" which would also solve this issue. "GET /users/2-new" would be distinct from "GET /users/new" so there would be no conflict. As a bonus the resource can still be easily queried by primary key by parsing "1-bob" into the integer 1, which matches the id for Bob''s record. @user = User.find("1-bob".to_i) # User.find(1) -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.