Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.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-通过操作重定向/渲染不起作用_Ruby_Redirect_Action_Render - Fatal编程技术网

Ruby on Rails-通过操作重定向/渲染不起作用

Ruby on Rails-通过操作重定向/渲染不起作用,ruby,redirect,action,render,Ruby,Redirect,Action,Render,我有以下代码: def isLoggedIn if session[:username].nil? puts "Not logged in!" return render :controller=>"admin", :action=>"login" end end 下面的代码在顶部调用此操作以检查用户的状态 def view_gallery isLoggedIn . . .

我有以下代码:

def isLoggedIn
    if session[:username].nil?
      puts "Not logged in!"
      return render :controller=>"admin", :action=>"login"
    end
  end
下面的代码在顶部调用此操作以检查用户的状态

def view_gallery
    isLoggedIn
       .
       .
       .
       .
      \/
    return render "view_gallery"
  end
我遇到的问题是,尽管控制台正在记录“Not Loggin!”,但代码仍会在isLoggedIn之后继续执行,因为用户没有按预期登录。然后,这应该呈现一个它没有呈现的替代布局。如果我错误地说出了这个动作(比如说“logib”),那么它会抱怨缺少一个模板——因此我可以看到它正在运行render函数

如果我将render更改为redirect_to和/或将return语句移动到行的末尾,也会发生同样的情况

有什么想法吗


非常感谢

《Rails指南》说要通过以下方式实现这一点:


render:controller=>“admin”,:action=>“login”并返回

,但正如我在原始问题中所说,这不会影响奇怪的行为。实际上,“render”不应该是重定向到的吗?另外,将IsLoggedIn移动到before_过滤器也是一个好主意。