2012-11-11 107 views
1

好吧,我的资产管道突然开始在我的开发机器上动作了。以前工作的JS函数现在抛出“不是函数”错误..我知道我必须做错了什么。一分钟前,数据表jquery函数正在工作,然后它抛出一个错误,然后它正在工作,现在它不工作或抛出一个错误。资产管道代理

这里是我的application.js

//= require jquery 
//= require jquery-ui 
//= require jquery_ujs 
//= require_self 
//= require_tree . 
//= require dataTables/jquery.dataTables 
//= require dataTables/jquery.dataTables.bootstrap 
//= require bootstrap 
//= require bootstrap-tooltip 
//= require bootstrap-popover 
//= require bootstrap-tab 
//= require bootstrap-modal 
//= require bootstrap-alert 
//= require bootstrap-dropdown 
//= require jquery.ui.addresspicker 
//= require raty 
//= require jquery.alphanumeric 
//= require jquery.formrestrict 
//= require select2 
//= require chosen/chosen.jquery 
//= require highcharts 
//= require jquery.lazyload 

下面是我的一些布局的头信息:

<%= stylesheet_link_tag "application", media: "all" %> 
    <%= yield(:scripthead) %> 
    <%= javascript_include_tag "application" %> 
    <%= csrf_meta_tags %>  
    <%= yield(:head) %> 

上面,我是用产量为他们只是从谷歌加载在线脚本在一些页面上需要,如果包含在应用程序布局中,通常会降低网站的速度。我尝试删除收益率,但是,即使在清除浏览器缓存并运行rake资产之后,仍然有问题:clean(仅仅是为了安全起见)。

这里的CSS和元标记之间显示的内容(的页面与产量scripthead没什么):

<script src="/assets/jquery.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script> 
<script src="/assets/application.js?body=1" type="text/javascript"></script> 
<script src="/assets/aidmodels.js?body=1" type="text/javascript"></script> 
<script src="/assets/audio.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-alert.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-dropdown.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-modal.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-popover.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-tab.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-tooltip.js?body=1" type="text/javascript"></script> 
<script src="/assets/branches.js?body=1" type="text/javascript"></script> 
<script src="/assets/charts.js?body=1" type="text/javascript"></script> 
<script src="/assets/chosen/backup_chosen.jquery.js?body=1" type="text/javascript"></script> 
<script src="/assets/chosen/chosen.jquery.js?body=1" type="text/javascript"></script> 
<script src="/assets/consumers.js?body=1" type="text/javascript"></script> 
<script src="/assets/dispensers.js?body=1" type="text/javascript"></script> 
<script src="/assets/favorites.js?body=1" type="text/javascript"></script> 
<script src="/assets/features.js?body=1" type="text/javascript"></script> 
<script src="/assets/generic_styles.js?body=1" type="text/javascript"></script> 
<script src="/assets/gmaps4rails/gmaps4rails.base.js?body=1" type="text/javascript"></script> 
<script src="/assets/gmaps4rails/gmaps4rails.bing.js?body=1" type="text/javascript"></script> 
<script src="/assets/gmaps4rails/gmaps4rails.googlemaps.js?body=1" type="text/javascript"></script> 
<script src="/assets/gmaps4rails/gmaps4rails.mapquest.js?body=1" type="text/javascript"></script> 
<script src="/assets/gmaps4rails/gmaps4rails.openlayers.js?body=1" type="text/javascript"></script> 
<script src="/assets/highcharts.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-ui-1.8.18.custom.min.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.alphanumeric.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.formrestrict.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.lazyload.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.ui.addresspicker.js?body=1" type="text/javascript"></script> 
<script src="/assets/likes.js?body=1" type="text/javascript"></script> 
<script src="/assets/messages.js?body=1" type="text/javascript"></script> 
<script src="/assets/overalls.js?body=1" type="text/javascript"></script> 
<script src="/assets/pages.js?body=1" type="text/javascript"></script> 
<script src="/assets/questions.js?body=1" type="text/javascript"></script> 
<script src="/assets/raty.js?body=1" type="text/javascript"></script> 
<script src="/assets/reviews.js?body=1" type="text/javascript"></script> 
<script src="/assets/sessions.js?body=1" type="text/javascript"></script> 
<script src="/assets/styles.js?body=1" type="text/javascript"></script> 
<script src="/assets/tickets.js?body=1" type="text/javascript"></script> 
<script src="/assets/universities.js?body=1" type="text/javascript"></script> 
<script src="/assets/users.js?body=1" type="text/javascript"></script> 
<script src="/assets/dataTables/jquery.dataTables.js?body=1" type="text/javascript"></script> 
<script src="/assets/dataTables/jquery.dataTables.bootstrap.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-transition.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-affix.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-button.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-carousel.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-collapse.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-scrollspy.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap-typeahead.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script> 
<script src="/assets/select2.js?body=1" type="text/javascript"></script> 

从application.rb中:

config.assets.initialize_on_precompile = false 
# Enable the asset pipeline 
config.assets.enabled = true 
config.action_controller.assets_dir = "#{File.dirname(File.dirname(__FILE__))}/public" 

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

对不起,我米不知道还有什么可以帮助这个难题,但任何建议,将不胜感激。在开始尝试上传到heroku之前,我没有遇到任何问题,现在一切都已经过时了。

编辑:

在此刻的控制台我看到

Uncaught TypeError: Cannot read property 'Constructor' of undefined bootstrap-popover.js:33 
Uncaught ReferenceError: google is not defined jquery.ui.addresspicker.js:25 
Uncaught TypeError: Object [object Object] has no method 'popover' overall:476 

编辑2:

由于一个评论下面我能想出解决办法。我不得不重新洗牌的application.js包括更有意义:

//= require jquery 
//= require jquery-ui 
//= require jquery_ujs 
//= require bootstrap 
//= require bootstrap-tooltip 
//= require bootstrap-popover 
//= require bootstrap-tab 
//= require bootstrap-modal 
//= require bootstrap-alert 
//= require bootstrap-dropdown 
//= require dataTables/jquery.dataTables 
//= require dataTables/jquery.dataTables.bootstrap 
//= require jquery.ui.addresspicker 
//= require raty 
//= require jquery.alphanumeric 
//= require jquery.formrestrict 
//= require select2 
//= require chosen/chosen.jquery 
//= require highcharts 
//= require jquery.lazyload 
//= require_self 
//= require_tree . 

OMG,这是推动我香蕉..不,它仍然是行不通的。最后一次编辑让所有的东西都正常工作,但后来我运行了rake资源:再次预编译并推送到了heroku中。它再次无法在Heroku上工作了,信不信由你,当我回到我的本地主机版本时,它已被破坏再次,并且现在抛出不同的错误,并且不再加载数据表!

Uncaught ReferenceError: google is not defined jquery.ui.addresspicker.js:25 
Uncaught ReferenceError: google is not defined application.js:26 
Uncaught TypeError: Object [object Object] has no method 'lazyload' overall:496 

回答

3

你确定你没有忘记JS中的某个分号吗?资产管道没有做任何代码清洁...

以在浏览器的JS控制台看一下其中的错误吐痰......

编辑:好吧,我想看看这是怎么回事。尝试在最后取出require_tree并手动加载任何其他未明确声明的JS文件。结果发生的是require_tree覆盖了以前需要明确列出的所有要求,并最终按字母顺序加载它们。

另外,我不知道你用什么创业宝石。(或者如果你甚至使用一个),但也尝试使用twitter/bootstrap,而不是只是bootstrap

+0

嗨,实际上,我没有改变它在工作的时间和它不是的时间之间的一行代码......并且控制台此刻没有显示任何数据表错误,这是不寻常的,我已经调用了datatables函数,并且表不是以数据表的方式呈现的。 – Abram

+0

看我的编辑。谢谢 – Abram

+0

我想现在发生的事情是你的JavaScript没有按照正确的顺序加载。我会在更多信息回家时更新我的​​答案。 –

0

这是什么环境发生?尝试在env/production.rb中运行config.assets.enabled = true或运行其中的任何环境。默认情况下,此设置在生产中处于关闭状态。

+0

一切都是正常的发展,然后我试着耙资产:预编译为heroku ..当我检查我的生产应用程序的问题正在发生,当我去检查我的开发应用程序它也被打破。 – Abram

+0

看到我的编辑,谢谢。顺便说一句,我尝试将该行添加到我的development.rb中,但仍然没有成功 – Abram