Rails包含js到特定的视图
问题描述:
我知道这里已经回答了这里:Javascript Include Tag Best Practice in a Rails Application,但是我没有得到一些东西。Rails包含js到特定的视图
如何指定js文件位于:defaults标记中?我试图指定js的路径而不是使用标签。
在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文件将不会被加载到别处。它不工作...
你能帮我解决这个问题吗?我在轨道上真的很新。谢谢
UPDATE
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>
答
对供应商的内容的正确位置(任何未具体项目或由您撰写)是/vendor/assets/javascripts
。这也可以解决您的问题,因为不需要//= require_tree .
。
所以移动到/vendor/assets/javascripts/http_cdn.quilljs.com_1.3.2_quill.js
。
/vendor/assets
位于链轮默认资产查找路径上。
<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
要覆盖由布局提供的块。
您可以将js文件存根手动加载,然后将其添加到'Rails.application.config.assets.precompile'中的assets.rb文件中,然后使用'javascript_include_tag'将其添加到您的视图中 。 –
如果您将文件放在'vendor/assets'文件中,那么无论如何您都应该放置供应商内容,则不需要存根@SebastiánPalma – max
我现在看到了,感谢提示@max。 –