Rails 3 URL without controller name

routes, ruby-on-rails, urlhelper

Solution

Your `routes.rb` probably has a line something like this:

resources :entries

which produces routes of the form `/entries/2012/05/10/foo`.

There exists a `:path` argument that allows you to use something besides the default name `entries`. For example:

resources :entries, :path => 'my-cool-path'

will produce routes of the form `/my-cool-path/2012/05/10/foo`.

But, if we pass an empty string to `:path`, we see the behavior you're looking for:

resources :entries, :path => ''

will produce routes of the form `/2012/05/10/foo`.

Problem

Suppose I want to have a blog with Rails 3 on my website and it will be the only thing I have on it. I would like to use Rails to implement it but I don't like the URLs Rails produces. I would like URLs like this: `example.com/2012/05/10/foo` I don't want something like that which I know how to do (with to_param): `example.com/entries/2012/05/10/foo` I still want to use the helpers like ``` new_entry_path(@entry) # -> example.com/new entry_path(@entry) # -> example.com/2012/05/10/foo edit_entry_path(@entry) # -> example.com/2012/05/10/foo/edit destroy_entry_path(@entry) form_for(@entry) link_to(@entry.title, @entry) ``` and so on. I then will have comments and want to make them accessible as their own resources too, like `example.com/2012/05/10/foo/comments/5` and those urls should also be possible to get with the normal helpers: ``` edit_entry_comment_path(@entry, @comment) # -> example.com/2012/05/10/foo/comments/5/edit ``` or something like that. So is it possible to get URLs without the controller name and still use the url helper methods? Just overwriting to_param will always just change the part after the controller name in the url. It would be really helpful to get some example code.

Original source