Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:如何检查用户是否存在于控制器中,如果不存在,如何重定向到其他站点_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails:如何检查用户是否存在于控制器中,如果不存在,如何重定向到其他站点

Ruby on rails Rails:如何检查用户是否存在于控制器中,如果不存在,如何重定向到其他站点,ruby-on-rails,Ruby On Rails,我想检查我的UserController的show操作中是否存在用户。如果用户不存在,则应将当前用户重定向到其个人资料页面(通过显示操作)。问题是它会一次又一次地被重定向,直到浏览器停止它 如果我不使用respond_to | format |(因此没有重定向),并且只使用set_user作为user.find(params[:id])的等效项,则浏览器中显示的路径是错误的路径,但它显示的是当前用户 UserController: def show respond_to do |

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

如果我不使用
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
因此,如果用户不存在,我希望在浏览器中显示正确的路径和当前用户。
要么是显示正确用户的路径错误,要么是重定向的内联循环。

可能是错误逻辑正确

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

如果用户找到了该怎么办?
如果用户存在(:id)
这个参数是[:id]?我想你的逻辑不正确。它应该是这样的'temp_user=user.find_by(id:params[:id])@user=temp_user?temp_user:current_user format.html{重定向到@user,注意:'用户不存在'}`@abhishek aravindan谢谢,就是这样。一个愚蠢的错误。你找到解决办法了吗???