Rails路由当前用户的个人资料页面

时间:2016-11-02 21:26:31

标签: ruby-on-rails routes

我正在寻找有关为当前用户的个人资料页面创建路径的最佳方法的建议。目前我只有用户作为资源。您可以访问/ users /:user_id访问任何用户的个人资料页面。我也有成员路由,例如/ users /:user_id / followers。我希望能够将当前用户带到他们的个人资料页面的路线/个人资料和/个人资料/粉丝。因此,如果我的用户ID为5,我可以转到/ profile,它会将我带到与/ users / 5相同的页面。

注意:我也在使用设计

路由

  resources :users, only: [:show, :update] do
    member do
      get :following, :followers
    end
  end

users_controller

  def show
    @user = User.find(params[:id])
  end

  def followers
    @user = User.find(params[:id])
    @title = "Followers"
    @users = @user.followers.active

    render 'show'
  end

  def following
    @user = User.find(params[:id])
    @title = "Following"
    @users = @user.followed_users.active

    render 'show'
  end

有没有办法可以使用用户控制器和相同的操作

1 个答案:

答案 0 :(得分:2)

在路线中添加

get 'profile', to: 'users#show'

在操作中使用current_user来查找用户而不是User.find(params[:id]。然后,您不需要在路径中添加Id

show action中,您可以添加以下内容以便同时使用这两种方式。

if params[:id]
  user = User.find(params[:id])
else
  user = current_user
end