[英]How do assets work in Rails?
我想在我的Rails应用程序中使用jQuery / Bootstrap /其他第三方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?
如果我只想在某些屏幕上使用第三方,而不是每个屏幕,该怎么办? 我怎么能做到这一点?
我在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安装目录的某个位置)。 因此它们位于项目之外,sprockets从该外部目录中提取它们。
为了避免在每个页面上包含这些文件,您只需要创建另一个不会引用application.js文件的布局。
要在不同的页面上使用不同的脚本来使用相同的布局,你可以使用content_for帮助器,有很多东西要改变,所以:
应用程序/视图/布局/ application.html
# remove this
<% javascript_include_tag 'application', 'data-turbolinks-track' => true %>
# and add this
<%= yield :scripts %>
接下来在所有视图中,您可以添加类似的内容(文件中的任何位置):
<% content_for :scripts do %>
<%= javascript_include_tag 'application' %>
<% end %>
该特定示例将仅包含对某些页面具有依赖性的application.js,并且在其他页面上不包含任何内容。 通常,您可以创建多个清单文件(许多类似application.js的文件。)但是如果您对sprockets不太熟悉,那么将常规js文件放入公共目录然后包含它们会更简单使用类似的东西:
<% content_for :scripts do %>
<script src="javascripts/jquery.js" ></script>
<script src="javascripts/pagination.js" ></script>
<% end %>
并且javascripts / jquery.js应该在您的公共目录中可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.