在Rails应用程序中加载自定义javascript文件

时间:2014-10-21 20:37:31

标签: javascript ruby-on-rails ruby-on-rails-4

我开发了一个javascript图表工具(使用kineticjs),需要加载一些不同的js文件。但他们需要按顺序加载。我设法这样做:

在特定视图内(位于文件顶部):

<%= javascript_include_tag "kinetic" %>
<%= javascript_include_tag "diagramtool/diagramtool0" %>
<%= javascript_include_tag "diagramtool/diagramtool1" %>
<%= javascript_include_tag "diagramtool/diagramtool2" %>
<%= javascript_include_tag "diagramtool/diagramtool3" %>
<%= javascript_include_tag "diagramtool/diagramtool5" %>
<%= javascript_include_tag "diagramtool/diagramtool6" %>

这在assets.rb中:

# Be sure to restart your server when you modify this file.

# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )

Rails.application.config.assets.precompile += %w( kinetic.js )
Rails.application.config.assets.precompile += %w( diagramtool/diagramtool0.js )
Rails.application.config.assets.precompile += %w( diagramtool/diagramtool1.js )
Rails.application.config.assets.precompile += %w( diagramtool/diagramtool2.js )
Rails.application.config.assets.precompile += %w( diagramtool/diagramtool3.js )
Rails.application.config.assets.precompile += %w( diagramtool/diagramtool5.js )
Rails.application.config.assets.precompile += %w( diagramtool/diagramtool6.js )

文件位于assets/javascripts/diagramtool

问题是,当我移动到具有上述代码的视图以加载文件时,它们不会按顺序加载。但是,如果我刷新页面,它们会按顺序加载!

所以,我的问题是

如何确保js文件按顺序加载? 为什么在刷新页面时按顺序加载文件?当我浏览应用程序时,为什么它们没有按顺序加载?

还有另一种方法吗?我尝试在application.js中使用资产管道和&#34; require&#34;关键词。但我不知道该怎么做。

我还尝试将所有代码放在一个文件中,但文件在kinetic文件之前加载!我得到错误,因为我需要先加载库文件。但是,如果我刷新页面,它会再次运作。

有任何帮助吗?我不知道该怎么做,让它正常工作。我是Ruby on Rails的新手,我还在学习如何做这种&#34;配置&#34;。

修改 我没有使用application.js加载js文件,因为我无法这样做。但这是:

//= require jquery
//= require bootstrap-sprockets
//= require jquery
//= require jquery_ujs
//= require turbolinks

/* 
 require kinetic
 require diagramtool
 require_tree . 
 */

1 个答案:

答案 0 :(得分:3)

刚才这样解决了:

创建了一个清单文件diagrams.js:

//= require diagramtool/kinetic
//= require diagramtool/diagramtool0
//= require diagramtool/diagramtool1
//= require diagramtool/diagramtool2

在视图中添加了这个:

<%= javascript_include_tag "diagrams" %>

将资产管道与清单文件一起使用。