rails 3的route中可否自定义参数形式,不适用默认:id

resources :users do
    resources :collections
end

这样的嵌套route,在rake 后会得到 /users/:user_id/collections/:id/users:id/ 我能不能自定义参数形式,希望得到这样的url

/users/:user_id

and

/users/:user_id/collections/:collection_id

并且,最关键的是,由params对象取参数时候,不再是params[:id],而是params[:user_id]

查过很多资料,都说重写to_param方法和使用friendly_id gem可以解决问题。但是其实这些都只是改变了url的形式,本身route并没有被改变,所以params[:user_id]的参数取法还是取不到的。

是否有其他可用的办法?

阅读 4k
2 个回答
resources :users do
    resources :collections
    get ':user_id',:action => :show, :on => :collection
end

不太理解为啥你需要 :userid 和 :collectionid,因为这两个从语义上来说应该是代表 nested resources,而 :id 是代表 member resource。

如果你真的需要,那就不能用 resources,而是自己用 match 去加参数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进