2

鉴于我有一个继承自的类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属性/方法时,它们将被委托给GlassDecorator? 部分是什么prefix:意思?

  2. 对于full_title方法,glass_title部件是否尝试title在 ? 中查找属性/方法GlassDecorator?如果是这样的话,难道仅仅是因为这delegate条线才成为可能吗?如果是这样,它是:prefix使它成为可能的部分吗?

谢谢你。

4

1 回答 1

2

1) :prefix将前缀添加到方法名的前面。例如,“glass_title”而不是“title” delegate意味着如果有人调用glass_title你的PageDecorator,它会去调用titleGlassDecorator把结果交给你。即 - 它将该方法委托给 in 中命名的对象:to

2) 是的。你已经正确理解了

于 2013-12-19T03:12:24.063 回答