Rails 在 <DOCTYPE 之前生成 html
Posted
技术标签:
【中文标题】Rails 在 <DOCTYPE 之前生成 html【英文标题】:Rails is generating html before <DOCTYPE 【发布时间】:2012-10-24 12:58:41 【问题描述】:我不明白这是怎么发生的。在我的页面上显示源代码是这样开始的——是的,那是 html 的开始,我已经在 Chrome 和 Safari 中仔细检查过......
</div>
</div>
</div>
<!DOCTYPE html>
<html>
<head>
<title>Rstest</title>
<link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/bootstrap_and_overrides.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/custom.css?body=1" media="all" rel="stylesheet" type="text/css" />
然而我的 application.html.erb 是这样开始的:
<!DOCTYPE html>
<html>
<head>
<title>Rstest</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
我想不出会导致这种情况的场景......
这里有更多细节,来自日志:
Rendered reports/report.html.erb within layouts/reptabs (1093.5ms)
Rendered layouts/application.html.erb (12.8ms)
以下是相关观点:
application.html.erb:
<!DOCTYPE html>
<html>
<head>
<title>Rstest</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<header class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<%= link_to "Repeat Survey", '#', id: "logo" %>
<nav>
<ul class="nav pull-right">
<li><%= link_to "Home", '#' %></li>
<li><%= link_to "About", '#' %></li>
<li><%= link_to "Contact", '#' %></li>
<li><%= link_to "Help", '#' %></li>
</ul>
</nav>
</div>
</div>
</header>
<div class="container">
<%= content_for?(:content) ? yield(:content) : yield %>
</div>
</body>
</html>
reptabs.html.erb:
<% content_for :content do %>
<div class="container">
<ul class="nav nav-tabs">
<li><%= link_to "Reports", report1_path(@program_id) %></li>
<li><%= link_to "Settings", edit_program_path(@program_id) %></li>
<li><%= link_to "Rounds", program_rounds_path(@program_id) %></li>
<li><%= link_to "Participants", program_participants_path(@program_id) %></li>
<li><%= link_to "Questions", program_questions_path(@program_id) %></li>
</ul>
<div class="container">
<div class="row">
<div class="span2">
<ul class="nav nav-pills nav-stacked">
<li><%= link_to("q r p", report1_path(@program_id)) %></li>
<li><%= link_to("r q p", report2_path(@program_id)) %></li>
<li><%= link_to("p r q", report3_path(@program_id)) %></li>
<li><%= link_to("p q r", report4_path(@program_id)) %></li>
</ul>
</div>
<div class="span9">
<%= content_for?(:reptabs_content) ? yield(:reptabs_content) : yield %>
<% end %>
</div>
</div>
</div>
<%= render :template => 'layouts/application' %>
report.html.erb:
<h2>Report</h2>
<p>
<%= @presenter.to_s %>
</p>
<table class="table table-striped">
<thead>
<tr>
<th>....</th>
<% @presenter.headers.each do |hdr| %>
<th><%= hdr %></th>
<% end %>
</tr>
</thead>
<tbody>
<% @presenter.rows.each do |row_instance| %>
<tr>
<td><%= @presenter.row_label(row_instance) %></td>
<% @presenter.cols.each do |col_instance| %>
<td>
<%= @presenter.cell(row_instance, col_instance).count %> =>
<%= @presenter.cell(row_instance, col_instance).join(", ") %>
</td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
我想知道我的 content_for 语句是否搞砸了?
【问题讨论】:
布局文件命名为 application.htmm.erb 或 application.html.erb ?无论如何,我建议您更正问题中的错字在您的应用程序中是正确的。 你检查了哪个视图实际上在<doctype
上方添加了内容?
【参考方案1】:
您应该像这样将 content_for 循环中的结尾向下移动 reptabs.html.erb:
<% content_for :content do %>
<div class="container">
<ul class="nav nav-tabs">
<li><%= link_to "Reports", report1_path(@program_id) %></li>
<li><%= link_to "Settings", edit_program_path(@program_id) %></li>
<li><%= link_to "Rounds", program_rounds_path(@program_id) %></li>
<li><%= link_to "Participants", program_participants_path(@program_id) %></li>
<li><%= link_to "Questions", program_questions_path(@program_id) %></li>
</ul>
<div class="container">
<div class="row">
<div class="span2">
<ul class="nav nav-pills nav-stacked">
<li><%= link_to("q r p", report1_path(@program_id)) %></li>
<li><%= link_to("r q p", report2_path(@program_id)) %></li>
<li><%= link_to("p r q", report3_path(@program_id)) %></li>
<li><%= link_to("p q r", report4_path(@program_id)) %></li>
</ul>
</div>
<div class="span9">
<%= content_for?(:reptabs_content) ? yield(:reptabs_content) : yield %>
<!--not here -->
</div>
</div>
</div>
<% end %><!--but here -->
<%= render :template => 'layouts/application' %>
【讨论】:
谢谢!那解决了它...我承认我不太了解此布局中的所有代码...但我会知道 位于错误的位置...我想知道我是如何/何时做到的那。谢谢#2:它解决了我试图在 *** 中写的另一个问题! 没有问题。我们都会犯这样的错别字。 ;)以上是关于Rails 在 <DOCTYPE 之前生成 html的主要内容,如果未能解决你的问题,请参考以下文章