Rails中的收益率与Ruby中的收益率相比

时间:2014-02-12 21:01:49

标签: ruby-on-rails templates erb yield

我对Ruby中的yield和Rails中的yield(特别是视图/模板中)是否是同一个实体感到困惑,或者它们是两个不同的行为,取决于上下文。

当我在Ruby中考虑yield时,会想到这种用法:

def some_method
  yield 123
end

some_method { |a| a + 1 } # => 124

在Rails中使用ERB模板时,yield用于呈现特定于当前控制器/操作的视图,或呈现通过providecontent_for指定的内容。

这是yield,还是Rails版本恰好是同名的不同功能?

1 个答案:

答案 0 :(得分:4)

它是一回事。将块传递给布局方法,该方法将在调用时呈现文档正文。

yield实际上是Ruby中的关键字。可以定义名为" yield"的方法。 (例如,枚举器执行此操作),但每当您看到yield没有接收器时,它将始终是将控制权传递给块的相同关键字。