I''ve been playing with REST today and can''t quite figure out a
routing
issue.
I have a controller named Accounts which has 3 actions:
1. new
2. create
3. chuck
My routes file has the following:
map.resources :accounts, :member => { :chuck => :get }
map.connect '':controller/:action/:id''
These are the urls I would expect to work, but they both produce errors:
http://localhost:3000/accounts/;chuck
Produces: Routing Error: no route found
to match "/accounts/;chuck" with {:method=>:get}
or
http://localhost:3000/accounts/chuck
Produces: Unknown action: no action responded to show
This actually works, but
http://localhost:3000/accounts/1;chuck
but doesn''t really contain a valid id, can put anything where the 1
is.
Just wondering what I am doing wrong?
Thanks,
Dave
--
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
-~----------~----~----~----~------~----~------~--~---
Hi David,
The last route is correct, but what is the chuck method doing ?
maybe you''re looking for :collection => {:chuck => :get}
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---
isaac wrote:> Hi David, > > The last route is correct, but what is the chuck method doing ? > > maybe you''re looking for :collection => {:chuck => :get}Hi Isaac, Chuck really doesn''t do anything, I was just messing with trying to add a non-standard REST action to a controller. The thing that''s weird is: http://localhost:3000/accounts/1;chuck http://localhost:3000/accounts/beetlejuice;chuck http://localhost:3000/accounts/anythingthatdoesntmatter;chuck all work. I want the chuck action to function like a nonREST action. The action requires no id, yet since it''s a get, it requires an id. In other words, I''d like the "chuck" action to function like the "index" action, since "index" requires no id. Hope that makes sense. 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 -~----------~----~----~----~------~----~------~--~---
Its not really that weird is it ?
In the second case its passing beetlejuice as the id, your controller
doesn''t know its an invalid id until you try and find the record -
@account = Account.find(params[:id])
I think you have 2 choices here:
1) You can keep everything RESTful and add chuck in like this:
map.resources :accounts, :collection => {:chuck => :get}
which will give you the route /accounts;chuck
2) you can include a custom route before your map.resources like this:
map.connect ''accounts/chuck'', :controller =>
''accounts'', :action =>
''chuck''
which give you the route /accounts/chuck
Your choice...#2 is not the restful way AFAIK
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---
isaac wrote: Hi Isaac, Just trying to see what''s possible with map.resources. I got the new agile 1.2 book - but it really doesn''t explain the difference between a collection and a member very well. Thanks again. Dave -- 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 -~----------~----~----~----~------~----~------~--~---
Hi Dave,> Just trying to see what's possible with map.resources. I got > the new agile 1.2 book - but it really doesn't explain the difference > between a collection and a member very well.In a Rails way, it would be Collection has_many :members, Member belongs_to :collection :-) -- Jean-François. -- À la renverse. --~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---
In this context a member would mean an individual instance of the model Account. A collection would be interested in more than one member of the model Account. So the index route/action/view is a collection because it is accessing a collection of accounts (possibly all accounts) The show route/action/view however is a member because it is only interested in one member of the model Account. (hence :id being part of the route - this is how the individual member is identified) I hope this is helpful and not more confusing :) disclaimer: I am quite new to ruby/rails/REST so please don''t take my word as gospel. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---