Rails 4 – 如何在供应商文件中引用javascript源代码

我刚刚发现我需要通过直接在我的应用程序中插入javascript文件来修改我的GMaps for Rails设置。 Rails 4 – Gmaps4Rails – 地图不会渲染

我已经克隆了信息框和markerclusterer repos,现在我试图引用我的应用程序中的相关文件。

我在供应商文件中有克隆附带的文件文件夹。

我理解我需要使用的javascript文件是:infobox.js和markerclusterer.js

这些文件位于:

vendor/js-marker-clusterer/src/makerclusterer.js vendor/v3-utility-library/src/infobox.js 

我想用它们代替这个视图中的代码:

     

我是否需要在app / application.js中引用javascript文件? 如果是这样,我需要在路径的哪一点开始(假设这些文件不在vendor / assets / javascripts文件夹中)?

此外,我知道我需要以某种方式合并markerclusterer图像。 这些也在克隆的仓库中出现,并存储在vendor / js-markerclusterer / images文件夹中。 如何引用它们以便它们在视图中工作?

最合乎逻辑的做法是将文件夹js-marker-clustererv3-utility-library放在vendor/assets/javascripts这样你就可以在application.js引用你需要的文件了

 //= js-marker-clusterer/src/makerclusterer //= v3-utility-library/src/infobox 

但是,如果由于某种原因无法执行此操作,则可以在config.assets.paths添加自定义路径,以便自动加载器可以找到它们

 // application.rb config.assets.paths << Rails.root.join("vendor", "js-marker-clusterer") config.assets.paths << Rails.root.join("vendor", "v3-utility-library") 

然后像他们一样引用它们

 //= src/makerclusterer //= src/infobox 

它总是很好用cdn或在你的情况下googlecode服务器,因为文件将从他们的服务器加载更快。 所以是的,这样做不会造成任何伤害。

     

假设您想通过清单文件(即application.js )加载它们,您可以在app/assets/javascripts文件夹中复制markerclusterer.jsinfobox.js ,并将它们包含在application.js如下所示

 //application.js file's content //= markercluster //= infobox 

现在因为这两个文件需要在google maps api文件之后加载,所以你应该在调用maps api后添加application.js。 这样可确保首先加载Google Maps API,并且您可以使用google.maps对象。

  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 

此外,您可以将所有图像放在app/assets/images images中的文件夹中,并app/assets/images访问其中的任何其他图像一样访问它们。