代码之家  ›  专栏  ›  技术社区  ›  FastSolutions

自定义Javascript Rails管理

  •  8
  • FastSolutions  · 技术社区  · 10 年前

    我想将Google Analytics嵌入API中的JS添加到我的rails应用程序中,并且只用于rails Admin(其他地方不需要)。

    我们已经覆盖了RailsAdminDashboard,现在我们正在使用自定义JS。

    我在这里找到了: https://groups.google.com/forum/#!topic/rails_admin/KgUl3gF5kTg 它需要放在 app/assets/javascripts/rails_admin/custom/ui.js .

    因此,我已经将所有.js文件和.js.map文件放在目录中:

    .
    └── custom
        ├── active-users.js
        ├── chart.js
        ├── datepicker.js
        ├── moment.js
        ├── platform.js
        ├── platform.js.map
        ├── polymer.js
        ├── polymer.js.map
        ├── promise.js
        ├── ui.js
        └── viewpicker.js
    

    我还补充了 //= require_tree . ui.js 文件,但在rails_admin中,我仍然收到:

    Uncaught ReferenceError: Polymer is not defined 
    

    这意味着没有加载JS文件。

    感谢此链接找到上述链接: Rails Admin: add javascript library to custom action

    编辑1: 在Rails 3环境中使用Rails Admin。

    编辑2:

    因此出于测试原因,我删除了所有自定义JS/HTML等。

    我已经在ui.js中设置了这个:

    //=require_tree .
    

    我在leecher.js中设置了这个:

    $(document).ready(function() { document.MY_SIMPLE_VARIABLE = 2; } );
    

    当我重新启动服务器时,我转到rails admin,注销,重新启动服务器,登录。转到chrome中的控制台并键入:

    document.MY_SIMPLE_VARIABLE
    

    我收到以下信息: enter image description here

    出于测试原因,我添加了:

    alert("hello world");
    

    但仍然没有触发。

    ui.js和leecher.js的位置是:

    app/assets/javascripts/rails_admin/custom/

    这是我当前的Gemfile:

    http://pastie.org/private/zrrzjpbx5jq7enpeknsa

    编辑3: 如果我将JS代码放入ui.JS,它会显示一个警告!因此,includes(//=require树)存在问题

    编辑4: 我使用的所有JS文件: https://gist.github.com/YOUConsulting/243397c31ea28d217367

    简单的例子是 工作: https://gist.github.com/YOUConsulting/571e785d6b6c1ed06d6b

    简单的例子是 工作: https://gist.github.com/YOUConsulting/52de78aa043239aae707

    2 回复  |  直到 7 年前
        1
  •  15
  •   Cec    10 年前

    我已经改写了我的答案,以描述完整的解决方案,以备将来其他人需要。

    app/assets/javascripts/rails_admin/custom/ui.js 工作方式类似于Rails资源管道中的清单文件,因此它支持 these directives .

    为了将所有.js文件包含在 风俗 添加

    //= require_tree .
    

    在文件的顶部。 如果这在开箱即用时不起作用,请运行

    rake tmp:clear
    

    将解决问题;)

    干杯

        2
  •  1
  •   FastSolutions    10 年前

    在和Cec谈了更多之后 topic 他发现一个简单的 rake-tmp:清除 ,是正确的答案。参见上面或下面的答案。