What is the difference between a restful route method for getting an index vs. creating a new object

Posted by Jason on Stack Overflow See other posts from Stack Overflow or by Jason
Published on 2010-04-06T18:57:02Z Indexed on 2010/04/06 19:13 UTC
Read the original article Hit count: 221

Filed under:
|
|
|
|

According to rake routes, there's the same path for getting an index of objects as there is for creating a new object:

cars GET    /cars(.:format)    {:controller=>"plugs", :what=>"car", :action=>"index"}
     POST   /cars(.:format)    {:controller=>"plugs", :what=>"car", :action=>"create"}

Obviously, the HTTP verb is what distinguishes between them. I want the "create" version of the cars_path method, not the "index" version. My question is what route method do you invoke to choose the one you want? I'm telling cucumber what path to generate with this:

when /the car plug preview page for "(.+)"/
  cars_path(:action => :create, :method => :post)

...but it always chooses the "index" action, not "create". I've tried lots of combinations for the hash argument following cars_path and nothing changes it from choosing "index" instead of "create".

I'll get an error like this:

cars_url failed to generate from {:controller=>"plugs", :method=>:post, 
:what=>"car", :action=>"create"}, expected: {:controller=>"plugs", :what=>"car",
:action=>"index"}, diff: {:method=>:post, :action=>"index"} 
(ActionController::RoutingError) 

This seems like a very simple question but I've had no luck googling for it, so could use some advice. Thanks.

© Stack Overflow or respective owner

Related posts about rails

Related posts about ruby-on-rails