0

我已经检查了很多类似的问题。大多数答案都显示了覆盖to_param方法。但这不是我想要的。

比方说resources: users

rake routes

edit_user GET    /users/:id/edit(.:format)              users#edit
user GET         /users/:id(.:format)                   users#show
PUT              /users/:id(.:format)                   users#update
DELETE           /users/:id(.:format)   

然后回到我的UsersController,我可以从中获取id参数params[:id]。但这不是我想要的,我想要的params[:user_id]。根据上面的路由是不可能的。因为路由没有:user_id参数。有什么方法可以帮助吗?

4

2 回答 2

1

一般来说,如果你同意遵守它的约定,Rails 会让你的生活变得轻松,否则就很难。所以我建议不要管这个。

但是,如果您真的希望参数是:user_id- 出于可读性原因或其他原因 - 您可以在 before_filter 中“别名”它:

params[:user_id] = params[:id]

希望有帮助!

于 2013-06-01T12:14:48.593 回答
1

您也许可以对默认值做一些事情,:path_prefix如果我找到方法,我会玩并更新。

如果需要,您可以手动执行此操作,方法是在路由中定义单独的匹配项,而不是使用资源生成器:

match 'users/:user_id/edit' => 'users#edit'

这将像这样解析网址/users/1/edit

Started GET "/users/1/edit" 
Processing by UsersController#edit as HTML
  Parameters: {"user_id"=>"1"}
于 2013-06-01T12:19:05.653 回答