我知道这已经在这里得到了解答:Javascript Include Tag Best Practice in a Rails Application但是我没有得到什么。
如何在:defaults标记中指定js文件?我试图指定js的路径而不是使用tag。
在application.html.erb中:
<head>
<title>...</title>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= yield :head %>
</head>
在视图中:
<% content_for :head, javascript_include_tag('qEditor/http_cdn.quilljs.com_1.3.2_quill') %>
此文件位于app/assets/javascripts/qEditor
,根据IDE,路径正确。我将application.js从//= require_tree .
更改为//= require_directory .
,因此js文件不会在其他地方加载。它不起作用......
更新
application.html.erb:
<!DOCTYPE html>
<html>
<head>
<title>....</title>
<%= csrf_meta_tags %>
<%= content_for :assets do %>
<%end%>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<div class="container">
<%= link_to 'Home', root_path, class: 'btn btn-default' %>
<button onclick="toggleTodos()" class="btn btn-default">Toggle TODO's</button>
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
<div class="jumbotron">
<%= yield %>
</div>
</div>
</body>
</html>
答案 0 :(得分:2)
供应商内容的正确位置(任何非项目特定或由您创作的内容)位于/vendor/assets/javascripts
。这也解决了您的问题,因为vendor/assets
不需要//= require_tree .
。
所以将其移至/vendor/assets/javascripts/http_cdn.quilljs.com_1.3.2_quill.js
。
/vendor/assets
位于Sprockets默认资源查找路径上。
<head>
<title>...</title>
<%= csrf_meta_tags %>
<%= content_for :assets do %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
<% end %>
</head>
由于content_for
连接,您只需添加content_for(:assets)
即可添加其他内容:
<% content_for :assets do >
<%= javascript_include_tag('http_cdn.quilljs.com_1.3.2_quill') %>
<% end %>
这也允许您使用provide
或concat: false
,以防您想要覆盖布局提供的块。