1

我无法理解这是怎么发生的。在我的页面上显示源代码是这样开始的——是的,那是 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)

以下是相关观点:

应用程序.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' %>

报告.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 语句是否搞砸了?


您应该像这样 reptabs.html.erb 一样将 content_for 循环中的末尾移动:

<% 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' %>
4

1 回答 1

1

您应该像这样 reptabs.html.erb 一样将 content_for 循环中的末尾移动:

<% 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' %>
于 2012-10-24T13:18:59.430 回答