我想知道是否可以路由到这样的内容/:user_id
user_id
是一个自定义ID,它不仅使用整数,而是使用其他字符,如NM-001
。然后在我的控制器中我有@user = User.find(params[:user_id])
。然后在视图中<%= @user.name %>
答案 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都不匹配您当前或未来的任何顶级路线。