在行动不起作用之前Rails跳过

我对skip_before动作有一些问题:

class ApplicationController < ActionController::Base protect_from_forgery with: :exception before_action :require_login before_action :inc_cookies def inc_cookies if cookies[:token] != nil @name = cookies[:name] @surname = cookies[:surname] @user_roomate = cookies[:roomate] end end def require_login if cookies[:token] == nil puts "No token" redirect_to '/' end end end 

和我的另一个控制器:

 class UsersController  [:landing, :connect, :create] end 

我不知道为什么,但是当我在root上时(来自UsersController的登陆动作),Rails尝试传入require_login …我用这个filter误解了一些东西,或者我做错了什么?

谢谢你的帮助!

这对我来说听起来很正常 – 你已经要求rails跳过你之前的动作,除非动作是:landing:connect:create ,听起来好像你想要相反。 如果您希望这3个操作不执行require_login那么您应该这样做

 skip_before_action :require_login, :only => [:landing, :connect, :create]