我环顾四周如何改变动态params插槽,并发现这篇文章确实完成了.该帖子是http://robots.thoughtbot.com/post/159809070/rails-patch-change-the-name-of-the-id-parameter-in
基本上它的作用是,如果以下是路线:
map.resources :clients, :key => :client_name do |client|
client.resources :sites, :key => :name do |site|
site.resources :articles, :key => :title
end
end
Run Code Online (Sandbox Code Playgroud)
这些路由创建以下路径:
/clients/:client_name
/clients/:client_name/sites/:name
/clients/:client_name/sites/:site_name/articles/:title
Run Code Online (Sandbox Code Playgroud)
一种解决方案是覆盖def to_param模型中的方法,但我希望这不触及模型本身.
但是自从它为Rails 2.x以来,我怎样才能为Rails 3实现相同的功能呢?
更新
这个程序是使用Mongoid.不是AR.所以,友好的宝石不能用于afaik.
来自 Rails docs,可以简单地这样做:
resources :videos, param: :identifier
Run Code Online (Sandbox Code Playgroud)
但是,如果我有嵌套资源怎么办?以下是路线:
resources :videos
resources :images
end
Run Code Online (Sandbox Code Playgroud)
以上生成路由,如:
video_images GET /videos/:video_id/images(.:format) images#index
Run Code Online (Sandbox Code Playgroud)
如何:video_id从路线覆盖?param在这种情况下,我似乎无法使用。