一个RoR v3路由问题?

时间:2011-09-01 05:43:16

标签: ruby-on-rails ruby-on-rails-3 routing

我想知道是否可以路由到这样的内容/:user_id user_id是一个自定义ID,它不仅使用整数,而是使用其他字符,如NM-001。然后在我的控制器中我有@user = User.find(params[:user_id])。然后在视图中<%= @user.name %>

1 个答案:

答案 0 :(得分:6)

是的,你可以有这样的路线。但是,如果您的:user_id包含句点,则您需要包含

:constraints => { :user_id => /.*/ }

在路由选项中,以防止Rails尝试将.whatever :user_id部分解释为格式说明符。

然后,您将在控制器中获得params[:user_id],然后您可以根据需要将其转换为对象。你可能想要做mischa在评论中所说的内容:

@user = User.find_by_user_id(params[:user_id])

此外,如果您真的想使用/:user_id作为路线,则需要确保您的任何用户ID都不匹配您当前或未来的任何顶级路线。