Hi! I need to be able to construct urls that looks something like
this: news/sport/1-article. The news/sport part is a section that an
article can be posted in. The idea is that sections can be nested and
that it should be reflected in the url. How's that possible to do
without globbing the whole route to a custom controller and then break
it apart?
I tried something like this in the routes.rb without any luck:
map.connect '*section/:id', :controller => 'articles', :action =>
'show'. If I change it to map.connect '*section/articles/:id' it
works but then i need that articles part in the routes all the time,
not a very good solution:)
I think I solved it my self actually!
It turns out that if you name the id parameter something else (like
article_id) Rails actually divides the params correctly.
So this route:
map.article_by_id '*sections/:article_id', :controller =>
"articles", :action => "show", :article_id => /\d|\d-(.+)/
would detect something like this:
news/sports/football/4
and Rails would route to the article controller and show action with
the following params: {"sections"=>["news", "sports", "football"],
"article_id"=>"4"}
Pretty cool, and hopefully this helps someone else with the same
problem that I had.