假设我需要在<head>
ERb 模板中调用 javascript 文件。我的直觉是照常做:
<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
</head>
在我的应用程序的布局中。问题当然是这些 javascript 文件被加载到我的应用程序的每个页面中,无论正在查看的页面是否需要它们。
所以我想知道是否有一种将javascript加载到例如仅在特定目录中找到的所有ERb模板的标题的好方法。
假设我需要在<head>
ERb 模板中调用 javascript 文件。我的直觉是照常做:
<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
</head>
在我的应用程序的布局中。问题当然是这些 javascript 文件被加载到我的应用程序的每个页面中,无论正在查看的页面是否需要它们。
所以我想知道是否有一种将javascript加载到例如仅在特定目录中找到的所有ERb模板的标题的好方法。
我会使用content_for。
例如,指定将其插入应用程序布局的位置:
<head>
<title>Merry Christmas!</title>
<%= yield(:head) -%>
</head>
并从一个视图发送到那里:
<%- content_for(:head) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>
我觉得包括所有的默认值都没有错,因为它们可以缓存在用户的浏览器上。
我建议不要在标题中添加 javascript,因为它会导致页面加载速度变慢。而是在页面底部加载js,这样更快。 http://developer.yahoo.com/performance/rules.html#js_bottom
<body>
....
<%= yield(:js) -%>
</body>
并从一个视图发送到那里:
<%- content_for(:js) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>
我通常在布局文件中有以下内容:
<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
<%= @extra_head_content %>
</head>
然后在视图中:
<% (@extra_head_content ||= "") += capture do %>
<%= other_content %>
<% end %>