为什么我的视图文件会将所有头部内容移动到正文部分?

时间:2016-08-29 01:43:18

标签: ruby-on-rails

我对application.html.erb文件和视图文件的组合方式感到很困惑。我在application.html.erb文件中有以下内容(为简洁起见,内容最小化):

<!DOCTYPE html>
<html>
  <head>
    <!-- Bootstrap Css -->
    <link href="/bootstrap-assets/css/bootstrap.css" rel="stylesheet">
    <%= yield :head %>
  </head>
<body>
   <nav>
      <!--Long navbar section -->
   </nav>
  <%= yield %>
</body>
</html>

在我的视图文件中:

<html>
<head>
    <!-- View Specific Stylesheet -->
    <link href="/css/ViewSpecific.css" rel="stylesheet" />
</head>
<body>
    <!-- View Specific Body -->
</body>

我期望的是,当这两个文件组合在一起时,<head>部分中的视图特定样式表加载,<body>部分中的视图特定体加载。在已加载<body> navbar之后,最终结果实际上会将视图特定样式表发送到application.html.erb部分。这显然会产生一些不需要的结果,即在加载样式表之前我的身体部分正在加载,而第一秒用户查看页面的一切看起来都很糟糕。

1 个答案:

答案 0 :(得分:1)

如果要将特定于视图的content_for呈现到head的标题部分,则应使用application.html.erb。使用

<% content_for :head do %>
 <!-- View specific head section -->
  <link href="/css/ViewSpecific.css" rel="stylesheet" />
<% end %>

由于您在:head中产生了application.html.erb,所以这一切都要完成。并且您在视图中不需要html个标记。

有关详情,请参阅http://apidock.com/rails/v4.2.1/ActionView/Helpers/CaptureHelper/content_for