一个RoR v3路由问题?

cam*_*seD 0 routing ruby-on-rails ruby-on-rails-3

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

mu *_*ort 6

是的,你可以有这样的路线.但是,如果您:user_id将包含句点,那么您将要包括

:constraints => { :user_id => /.*/ }
Run Code Online (Sandbox Code Playgroud)

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

然后,你将进入params[:user_id]你的控制器,然后你可以将它变成一个你想要的对象.你可能想在评论中做错误所说的:

@user = User.find_by_user_id(params[:user_id])
Run Code Online (Sandbox Code Playgroud)

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