在保留example.com/username
路线的同时,有没有办法获得example.com/users/1
?
简而言之,我只需要通过用户名链接到用户的个人资料。
答案 0 :(得分:1)
您可以使用以下方法添加这样的任意路线:
get "/:username" => "users#show", as: :username
这会将用户名作为参数传递给show动作。
然后在你的观点中:
<%= link_to user.name, username_path(username: user.username) %>
您还需要一个知道如何处理username
参数的控制器操作。如果您想使用现有用户控制器并保留/users/:id
网址,则可以执行以下操作:
def show
@user = if params[:username].present?
User.find_by_username(params[:username])
else
User.find(params[:id])
end
end