2015-11-05 60 views
3

我想在我的Rails应用程序中使用jQuery/Bootstrap /其他第三方js,但我无法理解Rails如何根据它如何引用这些脚本工作。资产如何在Rails中工作?

在我的宝石文件我有:

gem 'jquery-rails', '4.0.3' 
gem 'bootstrap-sass', '3.2.0.0' 
gem 'sass-rails',  '5.0.2' 

,我看到Rails包含在资产以下/ application.js中

//= require jquery 
//= require jquery_ujs 

这是否意味着Rails会包括jQuery的每一个画面我的应用程序有?

如果我想仅针对某些屏幕使用第三方,而不是每个屏幕我该如何做到这一点?

而我在Rails项目的任何地方都找不到jQuery.min.js。它在哪里位于?我一直在寻找在以下几点:应用程序/资产/ JavaScript的供应商/资产/ JavaScript的的lib /资产但没有的jQuery/jQuery UI的脚本。

回答

1
  1. 是它将包括它(应用/视图/布局/ application.html.erb

  2. 了jQuery/SASS /自举的CSS/JS使用缺省布局呈现每一单个屏幕上文件存在于gem目录中(深入ruby安装目录的某个地方)。所以它们不在你的项目中,并且链轮从外部目录中提取它们。

  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文件)。但是,如果您对链轮不太熟悉,只需将常规js文件放入公共目录,然后将它们包含在内使用类似:

<% content_for :scripts do %> 
    <script src="javascripts/jquery.js" ></script> 
    <script src="javascripts/pagination.js" ></script> 
<% end %> 

而且的JavaScript/jquery.js和应该在你的公共目录中。

+0

因此,基本上,对于第三方(如分页表,我不需要它在每个屏幕上)我应该手动将脚本复制到我的rails项目,以便我可以引用脚本标记?但通过这种方法,我总是必须手动更新每个第三方,这根本不行。创建一个新的布局听起来对我来说不是一个好主意。也许我想要像目前的布局,但使用不同的JavaScript的相同的HTML结构,并为此新的布局将不值得 –

+0

如果你看看application.html.erb里面有一段代码'javascript_include_tag'application', 'data-turbolinks-track'=> true'。它将* application.js *添加到页面上的所有依赖项中。您可以用任何自定义逻辑来替换该行,该行只会导入您需要的脚本。 –

+2

您还可以了解'content_for' rails helper,它可用于指定要在视图中导入的脚本而不是布局。 –

相关问题