Ruby on rails 在rails的助手模块中使用attr_reader有什么意义?

Ruby on rails 在rails的助手模块中使用attr_reader有什么意义?,ruby-on-rails,ruby,Ruby On Rails,Ruby,执行上述操作的结果是什么?我在Rails指南中看到了这一点,只是不明白。它允许通过调用视图中的products和products来读取@products实例变量中的值。您仍然需要在控制器中设置它们 这些读者实际上帮不了什么忙。它允许通过调用视图中的products和product来读取@products实例变量中的值。您仍然需要在控制器中设置它们 这些读者实际上帮不了什么忙。这是一个Ruby约定,它创建了一个名为product的“getter”和另一个名为products的“getter” 例如

执行上述操作的结果是什么?我在Rails指南中看到了这一点,只是不明白。

它允许通过调用视图中的
products
products
来读取
@products
实例变量中的值。您仍然需要在控制器中设置它们


这些读者实际上帮不了什么忙。

它允许通过调用视图中的
products
product
来读取
@products
实例变量中的值。您仍然需要在控制器中设置它们


这些读者实际上帮不了什么忙。

这是一个Ruby约定,它创建了一个名为product的“getter”和另一个名为products的“getter”

例如,如果您有一个对象ph,它相当于ProductHelper.new

module ProductsHelper
  attr_reader :products, :product    
end
在该模块中存在一个实例变量

ph = ProductHelper.new
如果不发送模块,您将无法访问它,因为它将被视为ph实例的私有

(如果以下内容令人困惑,请不要担心,因为作为rails的新手,您不会经常看到这些内容。进入元编程后,您会看到更多内容。)

但是,attr_读取器允许您读取方法或变量,就像它是实例的属性一样

ProductsHelper.send :products
它基本上为您执行这段代码

ProductHelper.products
虽然您通常只在模型类中看到它们,而不是在模块中看到它们。。。由于Ruby中的所有类都是模块,所以这种行为也存在于该级别。如果您没有任何方法,那么将返回信息,然后调用。产品将只返回nil

在Ruby中,也有创建“setter”的attr_编写器

它允许你这样做

def products( value )
  @products = value
end

最后还有attr_访问器,它在一个操作中创建getter和setter

这是一个Ruby约定,它创建了一个名为product的“getter”和另一个名为products的“getter”

例如,如果您有一个对象ph,它相当于ProductHelper.new

module ProductsHelper
  attr_reader :products, :product    
end
在该模块中存在一个实例变量

ph = ProductHelper.new
如果不发送模块,您将无法访问它,因为它将被视为ph实例的私有

(如果以下内容令人困惑,请不要担心,因为作为rails的新手,您不会经常看到这些内容。进入元编程后,您会看到更多内容。)

但是,attr_读取器允许您读取方法或变量,就像它是实例的属性一样

ProductsHelper.send :products
它基本上为您执行这段代码

ProductHelper.products
虽然您通常只在模型类中看到它们,而不是在模块中看到它们。。。由于Ruby中的所有类都是模块,所以这种行为也存在于该级别。如果您没有任何方法,那么将返回信息,然后调用。产品将只返回nil

在Ruby中,也有创建“setter”的attr_编写器

它允许你这样做

def products( value )
  @products = value
end
最后还有attr_访问器,它在一个操作中创建getter和setter