20

provide()任何人都可以对视图内部的工作方式给出明确的解释吗?我已经阅读了官方文档,但真正困扰我的是,如果我在模板的开头定义

<% provide(:title, 'Help') %>

然后我有这行代码

<%= yield :title %> 

后台到底发生了什么?我知道 yield 应该调用代码块。在这种情况下,代码块是什么?

4

1 回答 1

45

provide将标记块存储在标识符中以供以后使用。在这种情况下,符号 :title 中的“帮助”。包含在中的提供<% %>表明它正在执行此代码而不是在视图中打印出来。

yield在这种情况下,只是将那个块吐出来。产量被括在<%= %>其中表示它正在被打印到视图中。

将其视为设置变量并打印出变量。

有关更多信息,请参阅:http ://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-provide。请注意,这provide实际上是一个包装器,content_for所以这就是该链接中好东西所在的地方。

于 2013-07-03T21:19:40.247 回答