我对Ruby中的yield
和Rails中的yield
(特别是视图/模板中)是否是同一个实体感到困惑,或者它们是两个不同的行为,取决于上下文。
当我在Ruby中考虑yield
时,会想到这种用法:
def some_method
yield 123
end
some_method { |a| a + 1 } # => 124
在Rails中使用ERB模板时,yield
用于呈现特定于当前控制器/操作的视图,或呈现通过provide
或content_for
指定的内容。
这是yield
,还是Rails版本恰好是同名的不同功能?
答案 0 :(得分:4)
它是一回事。将块传递给布局方法,该方法将在调用时呈现文档正文。
yield
实际上是Ruby中的关键字。可以定义名为" yield"的方法。 (例如,枚举器执行此操作),但每当您看到yield
没有接收器时,它将始终是将控制权传递给块的相同关键字。