我有一个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 …
我误解了这个过滤器的东西,还是有什么问题?
感谢任何帮助!
解决方法
这对我来说听起来正常 – 你已经要求轨道跳过你的行动,除非是行动是:登陆,连接或:创建,而听起来好像你想要的是相反的.如果你想要这3个动作不执行require_login,那么你应该做
skip_before_action :require_login,:only => [:landing,:create]