yield和provide()在模板中

时间:2013-07-03 20:56:37

标签: ruby-on-rails

有人能清楚解释provide()在视图中的运作方式吗?我已经阅读了官方文档,但如果我在模板的开头定义

,那真正困扰我的是这个
<% provide(:title, 'Help') %>

然后我有这行代码

<%= yield :title %> 

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

1 个答案:

答案 0 :(得分:41)

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

在这种情况下,

yield只会吐出阻止退出的内容。收益率包含在<%= %>中,表示它正在打印到视图中。

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

请参阅:http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-provide 欲获得更多信息。请注意,provide实际上是content_for的包装器,因此该链接中的好东西就在这里。