繁体   English   中英

资产如何在Rails中运行?

[英]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 / javascriptsvendor / assets / javascriptslib / assets但没有jQuery / jQuery UI脚本。

  1. 是的,它将在使用默认布局呈现的每个屏幕上包含它( app / views / layouts / application.html.erb

  2. jquery / sass / bootstrap css / js文件位于gems目录中(深入ruby安装目录的某个位置)。 因此它们位于项目之外,sprockets从该外部目录中提取它们。

  3. 为了避免在每个页面上包含这些文件,您只需要创建另一个不会引用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM