0

我只是想要最简单的解决方案来检查用户是否是当前用户,并根据答案每次呈现略有不同的视图。

/users/:id为每个用户设置了一条路线,该路线show前往users_controller

控制器

  def show    
    @user = User.find(params[:id])
    respond_to do |format|
     format.html #show.html.erb
    end
  end

我想show.html.erb在很多地方更改文件。<% if @user == current_user %>我每次都可以尝试,但我认为这会造成冗长的代码或许多部分的混乱。

我也可以尝试创建第二个视图,但我不知道我是否在这里有效地工作:

控制器

  def show    
    @user = User.find(params[:id])
    if @user = current_user
      redirect_to show_is_current_user
    else
      respond_to do |format|
        format.html #show.html.erb
      end
    end
  end

 def show_is_current_user 
   @user = User.find(params[:id])
   respond_to do |format|
     format.html #show_is_current_user.html.erb
   end
 end

还有比上述更有效的解决方案吗?

4

1 回答 1

0

这将在用户查看其他用户的个人资料时呈现 show.html.erb 并在显示查看自己的个人资料时呈现 showself.html.erb:

  def show    
    @user = User.find(params[:id])
    if @user == current_user
        render "showself"
    end
  end
于 2013-01-01T22:48:16.030 回答