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

时间:2014-11-29 15:50:21

标签: ruby-on-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 < ApplicationController
 skip_before_action :require_login, :except => [:landing, :connect, :create]
end

我不知道为什么,但是当我在根目录(来自UsersController的登陆操作)时,Rails会尝试传入require_login ... 我用这个过滤器误解了一些东西,或者我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:38)

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

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