1

我正在研究 Rails 教程,我到达了布局部分。指示在视图中使用“provide”,在布局文件中使用“yield”。为什么我们不在代码中只使用即时变量:查看:

<% @title = 'about' %>

应用程序布局

<title>Website Name | <%= @title %></title>

这本书使用了更复杂的语法,并且肯定是有充分理由的

查看:

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

应用程序布局

<title>Website Name | <%= yield(:title) %></title>

两个都试了,都很好用。但我不明白为什么不使用更简单的即时变量方式?

4

2 回答 2

1

您可以使用 content_for 并传递一段代码,而不是提供。然后 yield 将能够执行这个代码块——它不只是打印一个变量。

这很有用,因为在更复杂的视图中,您将使用另一个称为“助手”的概念。继续做好工作,我相信将来事情会变得清晰。

于 2013-01-31T19:48:32.037 回答
0

您需要使用providecontent_for当您无法事先确定变量的值时。

例子:

  • 渲染布局
    • yield 标题 <-- 尚未定义
    • 产出主模板
      • 提供标题 <-- 在此处定义
于 2013-01-31T20:15:19.413 回答