视图和布局之间的通信

时间:2013-04-02 02:25:30

标签: ruby-on-rails ruby-on-rails-3

我是RoR的新手,我正在努力了解视图和布局之间的通信是如何工作的。

我找到了一些documentation,我得到了我需要使用providecontent_for方法,但它并没有真正解释它是如何完成的。

另外,为什么我需要在布局中使用yield来打印值?

实施例: home.html.erb(查看)

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

application.html.erb(layout)

<title>Great App | <%= yield(:title) %></title>

1 个答案:

答案 0 :(得分:0)

在子视图中,您可以通过传递带有文本内容的块来使用这些方法中的任何一种(这对于长内容段落(例如包含HTML标记的段落)非常有用):

<% content_for :title do %>
  <h1>The Title</h1>
<% end %>

或者您可以直接将字符串直接传递给#content_view作为第二个参数:

<% content_for :title, "The Title" %>

ContentHelper模块中有一些关于这些方法的更好的文档。

布局只包装其他视图,子视图可以被认为是传递给布局的“块”。如果您以这种方式考虑它们,yield关键字用于像块一样调用子视图是很自然的。