Rails路由 - 以root身份显示操作

Yuv*_*rmi 3 routes ruby-on-rails

我正在寻找一个我的控制器的显示动作根.我可以轻松地做到这一点:

map.root :controller => 'articles', :action => 'index'
Run Code Online (Sandbox Code Playgroud)

当我去localhost:3000 /它列出所有的文章 - 这太棒了!但是,我想要实现的是这样的URL

localhost:3000/1
Run Code Online (Sandbox Code Playgroud)

要显示ID为1的文章.更改路径,以下是我认为我必须做的事情:

map.root :controller => 'articles', :action => 'show'
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.相反 - 它寻找一个名为的控制器1- 它不存在.

我该怎么做呢?

谢谢!

mač*_*ček 6

试试吧 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'
Run Code Online (Sandbox Code Playgroud)


shi*_*ara 5

根路由只定义一条路由.不是几个.您可以定义另一条路线

map.connect '/:id', :controller => 'articles', :action => 'show'

如果你想要这种风格的路线,也许资源(http://api.rubyonrails.org/classes/ActionController/Resources.html#M000522)非常适合你.