2012-10-30 125 views
0

我有以下代码:Ruby on Rails的 - 重定向/通过行动使不起作用

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 

我遇到的问题是代码继续执行过去isLoggedIn虽然控制台正在记录“未登录!”因为正如所期望的那样用户没有登录。这应该呈现一个它不能做的替代布局。如果我拼错行为(比如说“logib”),那么它会抱怨缺少模板 - 所以我可以看到它运行渲染功能。

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

任何想法的?

非常感谢

回答

0

Rails的导游说,要做到这一点通过以下方式:

render :controller=>"admin", :action=>"login" and return

+0

但是就像我在原来的问题说,这不会影响奇怪的行为。 –

+0

其实,不应该把“render”当成redirect_to?另外,将IsLoggedIn移动到before_filter也是一个好主意。 – messick