目前,我使用两个提供 javascript 资产的 gems。这两种资产相互冲突。
在我的例子中,它是lazy_high_charts gem 和bootstrap-wysihtml5-rails gem。
我目前的项目中都有。首先,我只有一些文本框的 bootstrap-wysihtml5-rails gem。昨天我将lazy_high_charts gem 添加到我的仪表板项目中。
我的应用程序内的多个位置都有所见即所得的文本框。对于仪表板,我创建了一个带有索引操作的新控制器仪表板。
在我添加了lazy_high_charts_gem 并需要我的application.js 清单文件中的javascript 文件后,整个项目中我的文本框中的所有所见即所得编辑器都消失了。一旦我从我的 application.js 文件中删除了lazy_high_charts javascript 要求,所见即所得的编辑器就回来了。
第一次尝试 我第一次尝试解决这个问题是改变我的javascript要求的顺序:
应用程序.js
//= require bootstrap-wysihtml5
//= require bootstrap-wysihtml5/locales/de-DE
//= require highcharts/highcharts
//= require highcharts/highcharts-more
//= require highcharts/highstock
到: application.js
//= require highcharts/highcharts
//= require highcharts/highcharts-more
//= require highcharts/highstock
//= require bootstrap-wysihtml5
//= require bootstrap-wysihtml5/locales/de-DE
但这并没有改变。
第二次尝试
我第二次尝试解决这个问题是在dashboard.js 文件中要求lazy_high_charts javascript 文件。
应用程序.js
//= require bootstrap-wysihtml5
//= require bootstrap-wysihtml5/locales/de-DE
仪表板.js
//= require highcharts/highcharts
//= require highcharts/highcharts-more
//= require highcharts/highstock
但是这种尝试的问题是,在预编译所有资产之后,javascript 文件被编译成这个大的 javascript 文件,而我的所见即所得编辑器又停止了。
我的第三个想法如下: 对于我的仪表板,我可以为仪表板控制器创建一个自己的资产文件夹和一个清单文件。在它的 javascript 清单中,我可能需要lazy_high_charts javascript 文件。在仪表板/index.html.erb 视图文件的底部,我可以加载 javascript 清单
<%= javascript_include_tag "dashboard" %>
这将解决目前的问题。但是当我需要一个带有高图表和所见即所得文本框的视图时,我又遇到了同样的问题。
因此,我问我是否有更好的解决方案可以阻止两个宝石的冲突,并允许我在同一视图中使用两者。