Space
Space

Reputation: 2042

Routing trouble on Rails 3 (related to singular/plural)

I've read around the resources on how routing in Rails 3 works, but am running into some difficulties.

In my app there are Blogs and my routes.rb contains:

  resources :blogs
  root :to => "home#index"

URLs containing 'blogs' are work fine.

However what I'd like to do is have 'blog' in the URLs. Specifically, /blog/:id (for show) and /blog (for index).

If I add the line:

match 'blog' => 'blogs#index'

Then /blog does show the index, however it breaks my blog edit form as the action URL changes from /blog/:id to /blog.:id

Any ideas on how to use blog instead of blogs, and also allow the blog index to be on /blog? I've tried quite a few things (like resource :blog, and also resources :blogs, :as => 'blog') and not getting anywhere. Assuming there's a way to do this without manually defining each route for show, edit, destroy and index.

Upvotes: 1

Views: 1931

Answers (2)

Fábio Batista
Fábio Batista

Reputation: 25290

Remove your match line, and change your resouces line to:

resources :blogs, :path => 'blog'

Check: http://edgeguides.rubyonrails.org/routing.html#translated-paths

Upvotes: 0

shingara
shingara

Reputation: 46914

You need use the :path option

resources :blogs, :path => 'blog'

Upvotes: 4

Related Questions