自定义路由Rails中

问题描述:

我环顾四周,有一段时间了,但我不知道如何最好地形容我的要求给Google,所以认为我会问这里;)自定义路由Rails中

在轨,我知道当你窝宁静的路线,你通常得到的东西,如:

http://localhost/categories/1/articles/2

如果你想要的东西更有意义,你可以使用蛞蝓或friendly_id要达到这样的

http://localhost/categories/all-your-needs/articles/rock-out-with-this-article

(假设你有独特的名称)。

我的问题是,我该如何从URL重写卸下控制器,所以你得到的东西,如:

http://localhost/all-your-needs/rock-out-with-this-article

这可能吗?

是的。您可以使用这样的事情:

梁2:

map.show_article ':category/:article', :controller => "articles", :action => "show" 

编辑:

确定。在这里,您有其他REST操作的URL:

map.edit_article ':category/:article/edit', :controller => "articles", :action => "edit". 

对于更新添加:conditions => { :method => :post }前一个。

如需删除,请使用第一个:conditions => { :method => :delete }

对于新的创造,你可以使用:

map.new_article ':category/new', :controller => "articles", :action => "new" 

和创建相同但:conditions => { :method => :post }。我希望我能够帮助你!

+0

实际上,Rolpege提供的功能确实有效......但仅适用于一个操作(显示)。我如何扩展它以包含所有操作(或嵌套更多控制器)? – 2011-01-07 19:39:59