Ruby on rails 在Rails中,如果;在“U过滤器:需要登录”之前;行得通,那为什么要加上;“需要登录”;一个行动不起作用?

Ruby on rails 在Rails中,如果;在“U过滤器:需要登录”之前;行得通,那为什么要加上;“需要登录”;一个行动不起作用?,ruby-on-rails,Ruby On Rails,如果使用 before_filter :login_required 对控制器的所有操作都有效,但如果我对该行进行注释,并按此操作: def index login_required [...] end 然后,服务器抱怨它只能对每个操作渲染或重定向一次。我认为使用before过滤器与添加上述方法相同。请解释一下 过滤器前和过滤器周围可能会出现 在控制器之前停止请求 操作正在运行。这是有用的,因为 例如,拒绝访问 未经身份验证的用户或要重定向的用户 从HTTP到HTTPS。只需调用

如果使用

before_filter :login_required
对控制器的所有操作都有效,但如果我对该行进行注释,并按此操作:

def index
  login_required
    [...]
end
然后,服务器抱怨它只能对每个操作渲染或重定向一次。我认为使用before过滤器与添加上述方法相同。请解释一下

过滤器前和过滤器周围可能会出现 在控制器之前停止请求 操作正在运行。这是有用的,因为 例如,拒绝访问 未经身份验证的用户或要重定向的用户 从HTTP到HTTPS。只需调用render 或者重定向。后过滤器将不可用 如果过滤器链是 停下来


这是由(过滤器链停止)引起的。因此,如果在过滤器中,如果发生渲染或重定向,过滤器链将停止,其余代码将不会执行。因此,在这种情况下不会发生错误。但是,当您直接调用该方法时,方法调用后的代码也将被执行,因此会出现“每个操作渲染或重定向一次”错误。

如果您决定在操作中调用它,那么该如何执行@動靜能量 如果重定向发生在所需登录中,则必须从
login\u required
传递一个标志,如果设置了标志,则在
index
方法中调用
return