尝试在控制器中创建过滤器时获取 "Undefined method"
Getting "Undefined method" when trying to create filter in a controller
我正在使用 Rails 5. 在我的应用程序控制器中,我有:
private
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
然后,在另一个控制器中我有:
class MyObjectsController < ApplicationController
before_filter !current_user { redirect_to root_path }, except: [:search]
但我收到错误消息:
undefined method `current_user' for MyObjectsController:Class
我做错了什么,我如何将过滤器应用于控制器中除 search
方法之外的每个方法?
按照您的使用方式,current_user method
在加载 class 时被调用,它在该级别不可用。它仅在请求期间可用。这可能就是你的意思。
before_filter :require_current_user, except: [:search]
def require_current_user
redirect_to(:root, :notice => "you must be logged in") unless current_user
end
如果您使用的是设计,您应该能够
before_action :authenticate_user!, :except => [:search]
我正在使用 Rails 5. 在我的应用程序控制器中,我有:
private
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
然后,在另一个控制器中我有:
class MyObjectsController < ApplicationController
before_filter !current_user { redirect_to root_path }, except: [:search]
但我收到错误消息:
undefined method `current_user' for MyObjectsController:Class
我做错了什么,我如何将过滤器应用于控制器中除 search
方法之外的每个方法?
按照您的使用方式,current_user method
在加载 class 时被调用,它在该级别不可用。它仅在请求期间可用。这可能就是你的意思。
before_filter :require_current_user, except: [:search]
def require_current_user
redirect_to(:root, :notice => "you must be logged in") unless current_user
end
如果您使用的是设计,您应该能够
before_action :authenticate_user!, :except => [:search]