draper - 帮助理解代表" to"和"前缀"

时间:2013-12-19 03:08:09

标签: ruby-on-rails ruby draper

鉴于我有一个继承自Draper::Decorator的类,如下所示:

class PageDecorator < Draper::Decorator
  delegate_all

  delegate :title, :name, :region, :keys,
       to: :glass_decorator,
       prefix: :glass

  def full_title
    full_title = []
    full_title << glass_title if glass_title
    full_title.join(" ")
  end

在同一目录中的另一个文件中有一个名为GlassDecorator的装饰器。

  1. delegate行究竟是什么意思?这是否意味着当我尝试访问titlenameregionkeys属性/方法时,它们将被委托给GlassDecoratorprefix:部分是什么意思?

  2. 对于full_title方法,glass_title部分是否尝试在title中查找GlassDecorator属性/方法?如果是这种情况,是否仅仅因为delegate行而成为可能?如果是这样,:prefix部分是否可以实现?

  3. 谢谢。

1 个答案:

答案 0 :(得分:2)

1) :prefix会将前缀添加到method-name的前面。例如“glass_title”而不仅仅是“title” delegate表示如果有人在glass_title上拨打PageDecorator,则会在title上拨打GlassDecorator并将结果发送给您。 ie - 它将该方法委托给:to

中指定的对象

2)是的。你已正确理解