【问题标题】:yield in Rails versus yield in RubyRails 中的 yield 与 Ruby 中的 yield
【发布时间】:2014-03-11 11:06:20
【问题描述】:

我很困惑 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 版本恰好是同名的不同功能?

【问题讨论】:

    标签: ruby-on-rails templates erb yield


    【解决方案1】:

    这是一样的。将一个块传递给布局方法,该方法将在调用时呈现文档正文。

    yield 实际上是 Ruby 中的一个关键字。可以定义一个名为“yield”的方法(例如 Enumerator 就是这样做的),但是当您看到没有接收器的 yield 时,它总是将控制权传递给块。

    【讨论】:

    • 所以传递给布局方法的块是查看它接收到的参数的块,如果它是已经提供的东西的名称,它会显示,否则它呈现对应于的视图行动?
    • @GabrieleCirulli:是的,我理解的基本上就是这样。
    猜你喜欢
    • 2017-09-21
    • 1970-01-01
    • 2018-01-27
    • 2011-01-19
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2011-09-18
    相关资源
    最近更新 更多