Question

I want to create a route in my rails application along the lines of

/panda/blog
/tiger/blog
/dog/blog

where panda, tiger, and dog are all permalinks (for an animal class)

The normal way of doing this

map.resources :animals do |animal|
 animal.resource :blog
end

would create routes along the lines of

/animals/panda/blog
/animals/tiger/blog
/animals/dog/blog

But i do not want the first segment, as it will always be the same.

I know I could do this by manual routing, but I want to know how to do using rails resources, as having animals and blogs is a requirement for me.

Was it helpful?

Solution

In rails 3.x, you can add path => "" to any resource or resources call to remove the first segment from the generated path.

resources :animals, :path => ""

$ rake routes

    animals GET    /                   {:action=>"index", :controller=>"animals"}
            POST   /                   {:action=>"create", :controller=>"animals"}
 new_animal GET    /new(.:format)      {:action=>"new", :controller=>"animals"}
edit_animal GET    /:id/edit(.:format) {:action=>"edit", :controller=>"animals"}
     animal GET    /:id(.:format)      {:action=>"show", :controller=>"animals"}
            PUT    /:id(.:format)      {:action=>"update", :controller=>"animals"}
            DELETE /:id(.:format)      {:action=>"destroy", :controller=>"animals"}

OTHER TIPS

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top