[英]Rails routes - show action as root
我正在尋找一個我的控制器的顯示動作根。 我可以輕松地做到這一點:
map.root :controller => 'articles', :action => 'index'
當我去localhost:3000 /它列出所有的文章 - 這太棒了! 但是,我想要實現的是這樣的URL
localhost:3000/1
要顯示ID為1的文章。更改路徑,以下是我認為我必須做的事情:
map.root :controller => 'articles', :action => 'show'
但它似乎沒有用。 相反 - 它尋找一個名為1
的控制器 - 它不存在。
我該怎么做呢?
謝謝!
在routes.rb
試試這個
map.connect ':id', :controller => 'articles', :action => 'show'
你需要確保這是一個低優先級的路由,因為它是多么通用。 即,將它放在routes.rb
文件的底部但在此部分之上(如果您尚未刪除它):
# low-priorty article show route
map.connect ':id', :controller => 'articles', :action => 'show'
# Install the default routes as the lowest priority.
# Note: These default routes make all actions in every controller accessible via GET requests. You should
# consider removing or commenting them out if you're using named routes and resources.
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
根路由只定義一條路由。 不是幾個。 您可以定義另一條路線
map.connect '/:id', :controller => 'articles', :action => 'show'
如果你想要這種風格的路線,也許資源( http://api.rubyonrails.org/classes/ActionController/Resources.html#M000522 )非常適合你。
在Rails 3中,路由中沒有可用的映射方法。 而是使用這樣的東西:
match ':id', :controller => 'articles', :action => 'show'
並記得把它放在應該優先的路線下面。
用這個
resource :articles, :path => '/'
有了這個,你的所有文章將直接在root下
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.