在Application Controller中设置类似current_user的变量

时间:2016-04-13 13:51:18

标签: ruby-on-rails ruby-on-rails-4 devise

我有以下品牌范围的基本控制器

class Brand::ApplicationController < ApplicationController
  before_action :authenticate_brands_member!
  before_action :current_company
  helper_method :current_company

  private

  def current_company
    current_brands_member? current_brands_member.company : nil
  end

end

变量current_brands_membermembers身份验证的设备模型。每个成员都属于Company

members(id, name, company_id,...)
companies(id, name, ....)
brands(id, name, company_id,...)

由于我将遍历公司的成员到品牌,我想设置一个公共变量current_company,当控制器和视图中需要时,它将具有member's company的内容。

当我尝试在控制器中访问相同的

class Brands::MembersController < Brand::ApplicationController
  def index
    puts current_company.inspect
  end
end

我收到以下错误

undefined local variable or method `current_company' for #<Brands::MembersController:0x007f90c34a8138>

2 个答案:

答案 0 :(得分:1)

您无法从类外部访问private方法。删除private指令或将方法移到它之外。

答案 1 :(得分:1)

嗯,这对我来说非常好。

但有一件事。在$myMap['12']['name']的代码中,您遇到语法错误:

Brand::AppController