Cocoon(Ruby Gem)不在生产中

时间:2018-03-11 16:32:13

标签: jquery ruby-on-rails ruby cocoon-gem

我目前正在使用Ruby on Rails开发一个应用程序,并尝试使用cocoon gem实现嵌套属性:使用我当前的配置,它可以在我的本地计算机上运行,​​但不能在我的服务器上生成。我知道为什么它不起作用,但不知道如何解决它。

首先,这是我的清单,包括茧:

application.js    

...
//= require cocoon
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require chartkick
//= require_tree .

我在这里看到问题:Cocoon在jquery和jquery_ujs之前,因此我在开发人员工具的控制台中收到以下错误:

  

未捕获的ReferenceError:jQuery未定义在cocoon.self-6874ad698cefd21cc1119b773550f61b5c1a60396460f015222af59293affe80.js?body = 1:131

即使我有错误,本地嵌套属性仍然有效。另一方面,在生产中,添加关联的按钮( link_to_add_association )不再起作用(它是可点击的,但什么都不做,甚至没有抛出错误)。当然我还尝试重新排列清单并将jquery和jquery_ujs放在cocoon之前:但是然后cocoon再也不能正常工作了:而不是用 link_to_add_association 插入一个元素,cocoon插入2。

这是我的application.html的负责人:

application.html.erb

..
  <%= csrf_meta_tags %>
  <%= javascript_include_tag 'https://www.gstatic.com/charts/loader.js' %>
  <%= javascript_include_tag 'application', 'chartkick' %>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
..

以下是我的Gemfile的相关部分(ruby 2.3.1p112安装在生产服务器上):

Gemfile

..
gem 'rails', '5.0.2'
gem 'jquery-rails', '4.2.2'

..
# Used for the dynamic forms:
gem 'simple_form', '3.4.0'
gem 'cocoon', '1.2.9'

..

我不知道为什么cocoon会两次插入条目,或者为什么应用程序在生产中不起作用。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

只参考chartkick一次

从布局中删除行<%= javascript_include_tag 'application', 'chartkick' %>

答案 1 :(得分:0)

你包括application.js两次,这意味着cocoon javascript也包含两次,所以将有两个用于cocoon的点击处理程序:

<%= javascript_include_tag 'application', 'chartkick' %>
<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

Imho你应该删除第一行。