我认为以下helper:all
中的application.rb
会使current_user
对每个控制器和视图都可用?
class ApplicationController < ActionController::Base
helper :all
protect_from_forgery
before_filter { |c| Authorization.current_user = c.current_user }
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
...
private
...
protected
...
end
我的观点会像这样调用current_user
方法:
- if current_user
= link_to "Logout", logout_path
我得到了这个回复:
undefined local variable or method `current_user' for #<#<Class:0x007f971d812a48>:0x007f972050c378>
我错过了什么?
非常感谢,
史蒂芬。
PS我已经在与失败的视图相关联的控制器中进行了实验:
before_filter :current_user
答案 0 :(得分:1)
当参数是符号:all时,控制器将包含所有 ActionController :: Base.helpers_dir下的助手(默认为 RAILS_ROOT下的app / helpers / * /。rb。
您正在寻找:
helper_method :current_user, :current_user_session