Rails - redirect_to没有真正重定向 - 显示500错误

时间:2012-12-05 20:38:48

标签: ruby-on-rails ruby-on-rails-3.1

在我的网站上,我正在检查用户是否已通过身份验证。我在控制器中有以下内容..

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'

为什么我没有被重定向到根路径(这是我的主页),即使它说它正在重定向?有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

处理在redirect_to之后继续发生 - 没有隐式return。创可贴修复是根据return的结果在索引操作中添加login_required,但更好的方法是在控制器中使用filter