我对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
部分。这显然会产生一些不需要的结果,即在加载样式表之前我的身体部分正在加载,而第一秒用户查看页面的一切看起来都很糟糕。
答案 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