2015-03-03 58 views
0

所以,我有一个应用程序,它使用RoR 4.2.0和Ruby 2.2.0。这是一家网上商店,它有一个商店的商品,有一个'添加到购物车'按钮,我已经设置使用远程通话将产品添加到购物车。购物车还有一个按钮,通过远程调用可以销毁当前购物车。Rails - Bootstrap和AJAX调用

这用于在Rails 4.1.x上运行良好,但是在将我的应用程序升级到4.2.0(并将所有其他宝石更改为最新版本)之后,它没有。问题是,它在每个远程调用中发送2个调用,而不是一个(在某些时候它也发送了3个调用,我没有意识到它发生的时间,因为我已经与代码库中的其他地方一起修改),结果是在点击添加到购物车按钮时添加了两个项目,并且在销毁购物车点击两个提示进行删除。

我试图解决这个问题,我改变了application.js中条目的位置,如另一个问题所述。这是我目前的application.js:

//= require bootstrap 
//= require jquery 
//= require jquery-ui/effect-blind 
//= require jquery_ujs 
//= require turbolinks 
//= require underscore 
//= require gmaps/google 
//= require analytics 
//= require blueimp-gallery-all 

如果我离开这个现在的方式,引导导航栏菜单工程(为什么引导需要jQuery的,是不是啊?),但我有问题,上述。如果我将Bootstrap移动到jquery下面,那么AJAX调用就像他们应该那样工作,但我没有Bootstrap菜单。奇怪的部分是,如果我删除整个jquery行,一切正常,因为它应该。这里发生了什么? Bootstrap是否开始在某个时候包含jQuery?或者我的资产管道以某种方式“受损”?我已清除临时资产和资产(耙清:清除& &耙资产:清除)。

编辑:从javascript.js中删除jquery不生产,但在开发中工作。我很困惑。

+0

您是否调用过'javascript_include_tag“应用程序两次? – 2015-03-03 07:31:32

+0

你使用了什么'bootstrap gem'? 如果您使用[此宝石](https://github.com/seyhunak/twitter-bootstrap-rails)。那么你应该遵循这个指导方针[https://github.com/seyhunak/twitter-bootstrap-rails#using-javascript] – 2015-03-03 07:36:11

+0

我使用'bootstrap-sass',javascript_include_tag被调用一次。 – gemantzu 2015-03-03 07:43:15

回答

0

我正面临类似的问题。

的理由是:

  1. 多元包容的,由于其中有三个电话为单一的点击application.js(布局+ custom_view文件)
  2. 只是包括jQuery和在application.jsjquery-us.js和删除其他JS/jQuery的版本,然后再次检查
  3. 使用"data-turbolinks-track" => true

    <%= javascript_include_tag "application", "data-turbolinks-track" => true %>   
    <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>** 
    

希望这可以解决您的问题。

+0

'“data-turbolinks-track”=> true'已启用,并且我不'在任何其他文件中包含jquery。当我回家时,我会测试只留下'jquery'和'jquery-ujs'。我相信无论是在我的'config/environments/development.rb'中的东西是否与我的资产混淆,或者其中一个库也包含'jquery'。 – gemantzu 2015-03-03 13:14:12

+1

所以,我终于明白这一点......显然,我有资产预编译为生产,阻碍了我的应用程序正常工作......我运行了'RAILS_ENV = production rake assets:clean',然后我更正了'application.js'以获得正确的行(第一个'jquery',然后'bootstrap'),最后我运行RAILS_ENV = production rake assets:precompile,i上传到heroku,一切都很好...抱歉打扰你们所有人,thnx的答案,我从来没有见过这个地方(所以我认为预编译只会覆盖旧的),所以这是运气好,导致我解决方案。 – gemantzu 2015-03-03 20:17:57