小编Iro*_*com的帖子

如何在Rails 3.1资产管道中动态需要资产?

我有一个基于插件的系统,我用它在Rails中进行应用程序开发.每个插件都实现了一个带有MVC组件等的引擎.主应用程序只是一个空的线束,它将所​​有工作委托给安装的插件.

我目前正在从Rails 2.3.5升级到Rails 3.1,并试图让资产管道与我的框架一起工作.

我遇到的问题是尝试以编程方式要求我的插件的资源,例如,application.js清单.

我可以像这样手动添加它们:

//= require <plugin_manifest_path>
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.但是,由于我的框架中有许多插件,并且每个安装都有不同的组合,我希望根据安装的插件进行此清单更改.我试过这个解决方案:

<%=
Rails.plugins.collect do |plugin|
  "//= require #{plugin}"
end.join("\n")
%>
Run Code Online (Sandbox Code Playgroud)

但我发现资产管道编译的require/directive阶段发生在ERB扩展之前,因此生成的注释最终只是注释.

是否有另一种机制可以包含可能有效的编译路径?在指令处理开始之前预先处理清单文件的任何方法?

如果我想不出更好的东西,我可能必须编写一个rake/deployment任务,在部署时生成一个plugin.js清单文件,但如果可能的话,我会喜欢更清晰,更优雅的东西.谢谢!

编辑:发现解决方案,一旦stackoverflow让我发布完整的解决方案.同时查看以下评论​​......

plugins ruby-on-rails dynamic ruby-on-rails-3.1 asset-pipeline

11
推荐指数
1
解决办法
2806
查看次数

如何在javascript中动态地向数组中添加项目

首先,我是一个全新的javascript新手,所以请耐心等待.我有以下脚本使用Highchart框架绘制饼图

$(function() {
    var options = {
        colors: ["#66CC00", "#FF0000", "#FF6600"],
        chart: {
            renderTo: 'container',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: true
        },
        title: {
            text: 'Host Status'
        },
        tooltip: {
            formatter: function() {
                return '<b>' + this.point.name + '</b>: ' + this.total;
            }
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    color: '#000000',
                    connectorColor: '#000000',
                    formatter: function() {
                        return '<b>' + this.point.name + '</b>';
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'service status', …
Run Code Online (Sandbox Code Playgroud)

javascript jquery highcharts

1
推荐指数
1
解决办法
1万
查看次数