bdeonovic
bdeonovic

Reputation: 4220

Rails: routing question

I have this in my routes:

resources :cvits

which produces these routes:

 cvits    GET    /cvits(.:format)           {:controller=>"cvits", :action=>"index"}
          POST   /cvits(.:format)           {:controller=>"cvits", :action=>"create"}
 new_cvit GET    /cvits/new(.:format)       {:controller=>"cvits", :action=>"new"}
edit_cvit GET    /cvits/:id/edit(.:format)  {:controller=>"cvits", :action=>"edit"}
     cvit GET    /cvits/:id(.:format)       {:controller=>"cvits", :action=>"show"}
          PUT    /cvits/:id(.:format)       {:controller=>"cvits", :action=>"update"}
          DELETE /cvits/:id(.:format)       {:controller=>"cvits", :action=>"destroy"}

but I would like my urls to be singular (eg /cvit/, /cvit/new, /cvit/:id). What would be the easiest way to change this??????

Thanks!!!!

SOLVED: Figured it out, I did:

resources :cvits, :path => 'cvit'

Upvotes: 0

Views: 44

Answers (2)

Andrew
Andrew

Reputation: 43153

You just want a singular resource:

resouce :cvit

# instead of 
resources :cvits

Note that your controller names etc. will still be plural (CvitsController). In order to specify otherwise you can pass:

resource :cvit, :controller => 'cvit'

Also, note that when you do this you have no index action. Singular resources assume there's only one thing there, instead of being many.

Assuming that is what you have (a singular resource), this is better than passing the path option. The path option is just overriding the name and not the behavior (i.e. you still have an index, even though that doesn't make sense if you're dealing with a singular resource).

Upvotes: 0

apneadiving
apneadiving

Reputation: 115541

Well:

resources :cvit

Check doc here: http://guides.rubyonrails.org/routing.html#singular-resources

Or a better fit:

resources :cvits, :path => "cvit"

Same doc page.

Upvotes: 2

Related Questions