yield和provide()在模板中

Zed*_*Zed 18 ruby-on-rails

任何人都可以清楚地解释provide()视图中的工作原理吗?我已阅读官方文档,但如果我在模板的开头定义,那么真正困扰我的是这个

<% provide(:title, 'Help') %>
Run Code Online (Sandbox Code Playgroud)

然后我有这行代码

<%= yield :title %> 
Run Code Online (Sandbox Code Playgroud)

背景中真的发生了什么?我知道yield应该调用代码块.在这种情况下代码块会是什么?

Jef*_*ice 42

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

yield在这种情况下只是吐出阻止退出.封闭产量<%= %>以表明它正被打印到视图中.

可以将其视为设置变量并打印出变量.

有关 详细信息,请参阅:http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-provide.请注意,provide它实际上是一个包装器,content_for因此这个链接中的好东西就在这里.