在我的网站上,我正在检查用户是否已通过身份验证。我在控制器中有以下内容..
def index
login_required
@profile = current_user.profile ### line 9
..
然后在我的application_controller中,我有了login_required方法的定义..
def login_required
unless current_user
redirect_to root_path, :notice => "Please login first"
end
end
即使我的日志显示我正在重定向到root,但它仍然没有真正把我带到根路径,而是让我回到我的控制器 - > index 和“@profile = current_user.profile”行上的错误。这是日志..
Started GET "/meetings" for 127.0.0.1 at 2012-12-05 12:18:12 -0800
Processing by xyzController#index as HTML
Redirected to http://localhost:3000/
Completed 500 Internal Server Error in 1ms
NoMethodError (undefined method `profile' for nil:NilClass):
app/controllers/xyz_controller.rb:9:in `index'
为什么我没有被重定向到根路径(这是我的主页),即使它说它正在重定向?有任何想法吗?感谢。
答案 0 :(得分:0)
处理在redirect_to
之后继续发生 - 没有隐式return
。创可贴修复是根据return
的结果在索引操作中添加login_required
,但更好的方法是在控制器中使用filter。