【发布时间】:2018-03-11 16:32:12
【问题描述】:
我目前正在使用 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 插入两个。
这是我的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 会插入两次条目,也不知道为什么应用程序在生产环境中不起作用。有谁知道我该如何解决这个问题?
【问题讨论】:
-
其他问题:您在 application.js 中包含了 chartkick.js,但随后您也在
<%= javascript_include_tag 'application', 'chartkick' %>的布局中加载了 chartkick。这对我来说没有意义 -
你为什么不把茧移到 jquery 要求下面呢?
-
@SimonFranzen 您的第一个答案解决了我的问题。太感谢了!如果您在答案中输入“仅参考 chartkick 一次”,我会接受。
-
很高兴听到。是的,我更新了我的答案@megahra
标签: jquery ruby-on-rails ruby cocoon-gem