我想在我的 Rails 应用程序中使用 jQuery/Bootstrap/其他第 3 方 js,但我无法理解 Rails 如何引用这些脚本。
在我的 Gem 文件中我有:
gem 'jquery-rails', '4.0.3'
gem 'bootstrap-sass', '3.2.0.0'
gem 'sass-rails', '5.0.2'
我看到 Rails 在 assets/application.js 中包含以下内容
//= require jquery
//= require jquery_ujs
这是否意味着 Rails 将为我的应用程序的每个屏幕包含 jQuery?
如果我只想对某些屏幕而不是每个屏幕使用第 3 方怎么办。 我怎样才能做到这一点?
而且我在我的 Rails 项目中找不到 jQuery.min.js。它在哪里位于?。我一直在搜索以下内容:app/assets/javascripts、vendor/assets/javascripts、lib/assets 但没有 jQuery/jQuery UI 脚本。
最佳答案
是的,它将在使用默认布局呈现的每个屏幕上包含它 (app/views/layouts/application.html.erb)
jquery/sass/bootstrap css/js 文件位于 gems 目录中(在您的 ruby 安装目录的深处)。因此它们在您的项目之外,链轮从该外部目录中提取它们。
要避免在每个页面上都包含这些文件,您只需创建另一个不引用 application.js 文件的布局。
要包含在具有相同布局的不同页面上使用的不同脚本,您可以使用 content_for 助手,有很多事情需要改变,所以:
应用/views/layouts/application.html
# remove this
<% javascript_include_tag 'application', 'data-turbolinks-track' => true %>
# and add this
<%= yield :scripts %>
接下来,在您的所有 View 中,您可以添加类似这样的内容(在文件中的任何位置):
<% content_for :scripts do %>
<%= javascript_include_tag 'application' %>
<% end %>
该特定示例将只包含在某些页面上具有依赖性的 application.js,而不会在其他页面上包含任何内容。通常,您可以创建多个 list 文件(许多类似 application.js 的文件。)但是如果您对 sprockets 不是很满意,那么将常规 js 文件放入公共(public)目录然后包含它们会简单得多使用类似的东西:
<% content_for :scripts do %>
<script src="javascripts/jquery.js" ></script>
<script src="javascripts/pagination.js" ></script>
<% end %>
javascripts/jquery.js 应该在您的公共(public)目录中可用。
关于javascript - Assets 在 Rails 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554222/