【发布时间】:2017-10-14 10:05:18
【问题描述】:
我知道这里已经回答了这个问题:Javascript Include Tag Best Practice in a Rails Application,但是我没有得到任何信息。
如何指定 :defaults 标签中的 js 文件?我试图指定 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 文件不会在其他地方加载。它不起作用...
你能帮我解决这个问题吗?我对rails真的很陌生。谢谢
更新
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>
【问题讨论】:
-
您可以存根 js 文件以手动加载它,然后将其添加到
Rails.application.config.assets.precompile中的 assets.rb 文件中,最后使用javascript_include_tag将其添加到您的视图中。 -
如果您将文件放在
vendor/assets中,则不需要存根,无论如何您都应该放置供应商内容@SebastiánPalma -
我现在明白了,感谢@max 的提示。
-
主要问题是视图中的行不正确。将
content_for与块一起使用,不要忘记将javascript_include_tage与<%=一起使用,而不是<%标记,否则代码将不会在您的视图中输出。见:guides.rubyonrails.org/…
标签: ruby-on-rails path header ruby-on-rails-5