Rails是否会向后发展?#34;在这个例子中的代码?

时间:2014-04-26 02:41:58

标签: html ruby-on-rails

我有以下网页home.html.erb

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

<h1>Sample App</h1>
<p>
  This is the home page for the
  <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
  sample application.
</p>

我有以下布局application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title><%= full_title(yield(:title)) %></title>

        ...

</head>
<body>

<%= yield %>

</body>
</html>

full_title()是一个函数,用于检查是否有作为参数传递的标题。如果有,它会将其放入HTML中。如果没有给出参数,它将在HTML中放置一个基本标题。

我假设通过application.html.erb开始跟踪,然后在到达<%= yield %>时,它会将home.html.erb的内容嵌入到application.html.erb的该位置,从而产生在以下文件中:

<!DOCTYPE html>
<html>
<head>
  <title><%= full_title(yield(:title)) %></title>

        ...

</head>
<body>

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

<h1>Sample App</h1>
<p>
  This is the home page for the
  <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
  sample application.
</p>

</body>
</html>

在第4行<%= full_title(yield(:title)) %>中,{Home}肯定会传递值“Home”,但代码:title在几行之后才会传递。 Rails是否会倒退才能实现这一目标?这是怎么回事?

2 个答案:

答案 0 :(得分:1)

不,不是。这是一种字符串插值,每次调用provide(:title,...)

后都会替换此值

答案 1 :(得分:0)

我的理解是在应用程序布局之前处理home.html.erb。换句话说,视图和帮助程序已准备好并且已插入&#39;在整个事情完成之前到应用程序布局。我想&#34;倒退&#34;取决于你看它/它的实际工作方式。我还在学习,但它不一定是从上到下的。关于代码在页面上的布局方式的顺序。