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