在保留现有路由的同时添加新路由example.com/username

时间:2014-01-21 03:45:00

标签: ruby-on-rails

在保留example.com/username路线的同时,有没有办法获得example.com/users/1

简而言之,我只需要通过用户名链接到用户的个人资料。

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