0

我认为helper:all以下内容application.rbcurrent_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
4

1 回答 1

1

从文档:

当参数是符号 :all 时,控制器将包含 ActionController::Base.helpers_dir 下的所有助手(默认为 RAILS_ROOT 下的 app/helpers/*/.rb)。

您正在寻找:

helper_method :current_user, :current_user_session
于 2012-10-18T11:18:44.863 回答