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 %>毎回試すことができましたが、長いコードや多くのパーシャルで混乱を招くと思いました。

2 番目のビューを作成することもできますが、ここで効率的に作業しているかどうかはわかりません。

コントローラ

  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 に答える