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_过滤器也是一个好主意。