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

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]的参数取法还是取不到的。

是否有其他可用的办法?


resources :users do
    resources :collections
    get ':user_id',:action => :show, :on => :collection
end

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

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

【热门文章】
【热门文章】