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-clusterer
和v3-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.js
和infobox.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
访问其中的任何其他图像一样访问它们。