我是rails的新手,正在尝试找出如何使嵌套布局正常工作;我假设他们有点像.net母版页?
我已经关注this guide了,我在我的布局目录中创建了一个application.erb.html,其中包含:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title><%= @page_title or 'Page Title' %></title>
<%= stylesheet_link_tag 'layout' %>
<style type="text/css"><%= yield :stylesheets %></style>
</head>
<body>
<%= yield(:content) or yield %>
</body>
</html>
并将我现有的一个布局修改为:
<% content_for :stylesheets do %>
<% end -%>
<% content_for :content do %>
<p style="color: green"><%= flash[:notice] %></p>
<%= yield %>
<% end -%>
<% render :file => 'layouts/application' %>
当我在浏览器中查看我的一个视图时,绝对没有任何内容呈现;当我查看源代码时,没有HTML。
我确信我错过了一些基本的东西,有人能说出来吗?!
答案 0 :(得分:29)
我已经找到了解决方案,虽然它不是this article中给出的
我已经替换了这一行
<% render :file => 'layouts/application' %>
与
<%= render :file => 'layouts/application' %>
我不确定这篇文章是不是错了,或者我找错了解决它的方法!请告诉我!
干杯
答案 1 :(得分:4)
原始文章有错误,您的解决方案是正确的。原因如下:
包含在&lt;%=%&gt;中的ERB(视图)中的ruby代码输出被添加到生成并发送到浏览器的HTML中。包含在&lt; %%&gt;中的ruby代码的输出没有添加到HTML中。所以调用&lt;%render:partial ...%&gt;因为ruby代码(获取部分)的结果没有添加到生成的HTML文件中,所以没有任何效果。
&lt; %%&gt;通常保留用于条件和循环,就像上面的例子中一样。
答案 2 :(得分:0)
这里有a different approach嵌套布局,可能会派上用场。