【问题标题】:Custom Javascript Rails Admin自定义 Javascript Rails 管理员
【发布时间】:2014-08-21 08:59:49
【问题描述】:

我想将来自 Google Analytics 嵌入 API 的 JS 添加到我的 rails 应用程序中,并且仅用于 Rails 管理员(在其他任何地方都不需要)。

我们已经覆盖了 Rails 管理仪表板,现在我们正在努力处理自定义 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

我在ui.js 文件中添加了//= require_tree .,但在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

我收到以下信息:

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

alert("hello world");

但仍然没有触发。

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

app/assets/javascripts/rails_admin/custom/

这是我当前的 Gemfile:

http://pastie.org/private/zrrzjpbx5jq7enpeknsa

编辑 3: 如果我将 JS 代码放入 ui.js 中,它会显示警报!所以它们是包含问题(//= 需要树。)

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

不起作用的简单示例: https://gist.github.com/YOUConsulting/571e785d6b6c1ed06d6b

确实工作的简单示例: https://gist.github.com/YOUConsulting/52de78aa043239aae707

【问题讨论】:

  • 问题不在于 ui.js,而在于它之前的文件...尝试通过重命名将 ui.js 放在首位...我认为 .map 的扩展名可以是一个问题。尝试删除它。
  • @Milind 我认为 Rails 管理员需要 ui.js,所以我认为重命名不是一种选择。
  • 您使用的是 ActiveAdmin for Rails,还是您自己的管理区域实现?
  • @RichPeck 我正在使用 Rails 管理员先生。
  • 谢谢!让我看看:)

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 rails-admin


【解决方案1】:

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

app/assets/javascripts/rails_admin/custom/ui.js 像 Rails 资产管道中的清单文件一样工作,因此它支持these directives

为了包含 custom 下的所有 .js 文件,添加

//= require_tree .

在文件的顶部。 如果开箱后不能正常工作,请运行

rake tmp:clear

会解决问题;)

干杯!

【讨论】:

  • 嗨!我已经完成了您对我的要求,请注意编辑 2。我在其中解释了我所做的事情和结果。版本:Rails 3.2.18 / Rails Admin 0.4.9 / Ruby 1.9.3p484。
  • 啊啊!如果我将 JS 代码放入 ui.js 中,它会显示警报!所以它们是包含问题(//= 需要树。
  • uhmmm 那么您可以编辑问题以包含 ui.js 的内容吗?或指向它的链接?
  • 非常感谢@Cec 这个简单但显然最好的答案。
【解决方案2】:

topic 上与 Cec 进行了更多交谈。他发现一个简单的 rake tmp:clear 是正确的答案。请参阅上方或下方的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多