我目前正在使用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会两次插入条目,或者为什么应用程序在生产中不起作用。有谁知道如何解决这个问题?
答案 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你应该删除第一行。