RAIRS:如何检查用户是否在控制器中,如果不是将用户重定向到其他站点



我想检查用户是否存在于我的UserController的显示动作中。如果用户不存在,则应将当前用户重定向到其在个人资料页面上(通过显示操作(。问题是它会一次又一次地重定向到浏览器停止。

如果我不使用 respond_to |format|(因此,没有重定向(,仅使用set_user作为 User.find(params[:id])等效的浏览器中显示的路径是错误的路径,但它显示了当前的用户。

 UserController:
  def show
    respond_to do |format|
      if User.exists?(:id)
        @user = User.find(params[:id])
        format.html
      else
        set_user
        format.html {redirect_to @user, notice: 'User does not exist' }
      end
    end
  end
  private
  def set_user
    @user = current_user
  end

所以我希望浏览器中的正确路径和如果用户不存在,将显示当前用户。要么有错误的路径显示正确的用户,要么有一个Infitine循环。

可能是逻辑正确的错误,

def show
respond_to do |format|
  if User.exists?(params[:id])
    @user = User.find(params[:id])
    format.html
  else
    set_user
    format.html {redirect_to @user, notice: 'User does not exist' }
  end
end
end

相关内容

最新更新