rails中admin管理器中的类变量的范围

时间:2015-07-17 08:46:55

标签: ruby-on-rails ruby variables scope

我需要从admin帮助程序中的另一个方法访问admin帮助程序中的一个方法的变量。定义实例变量不会起作用。全局变量的范围肯定是广泛的(我只需要在admin帮助程序中访问)。因此,我想知道我是否可以使用类变量(@@)来实现这一点。或者这里的范围是否再次广泛?如果是这样,限制范围的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

通常,实例变量应该在一个类中可用。所以我猜你使用的方法是单身方法,这是" def self.method"

实例变量在单例方法中不可用,除非您使用类实例变量。

sender as ToggleButton

A.a和A.b将输出

class A
  @class_instance_vari = 0
  def self.a
    p "class instance vari is #{@class_instance_vari}"
    p "instance vari is #{@instance_vari} #"
  end

  def self.b
    p "class instance vari is #{@class_instance_vari}"
    p "instance vari is #{@instance_vari} #"
  end

  def initialize(*args)
    @instance_vari = 0
  end
end

基本上类实例变量与类变量具有相同的范围。类实例变量在子类中不具有相同的值,而类变量在所有子类中将始终包含相同的值。