如何在ActiveAdmin中包含gazon / gon

时间:2015-04-07 09:34:22

标签: javascript ruby-on-rails activeadmin

我正在使用ActiveAdmin开发Rails项目,我想使用' gem gon'处理我的javascripts文件中的数据发送。 我遇到的问题是在activeadmin的dashboard.rb中无法识别gon变量。

  

未定义的局部变量或方法`gon'

这是我的代码到目前为止这个railscast指南instructs

# creat gon variable
gon.test = "hey there"
render partial: 'graph/dashboard_graph.html.erb' #this is a partial

我找到了这篇文章,但我有一个不同的场景。  https://github.com/activeadmin/activeadmin/issues/2450

我也发现这个具有相同的情况,但没有明确的解决方案:  Active Admin: Including Javascript

我一整天都被困在这个错误中,并且花时间搜索如何在ActiveAdmin中正确地包含gon,但我找不到解决方案。我希望你能提供输入。

谢谢。

Chkm8

2 个答案:

答案 0 :(得分:3)

在/ config / initializers /中创建新文件,例如:activeadmin.rb并粘贴它:

module ActiveAdmin
  module Views
    module Pages
      class Base < Arbre::HTML::Document

        alias_method :original_build_head, :build_active_admin_head

        def build_active_admin_head
          original_build_head

          within @head do
            text_node Gon::Base.render_data({ })
          end
        end

      end
    end
  end
end

我遇到了同样的问题,这对我有用。 如果你没有使用Rails 4代替 Gon :: Base.render_data({}),那么它可能是 include_gon

答案 1 :(得分:1)

active_admin的最新稳定版本使用 head 代替 @head

使用@head获取最新版本的以下错误时

ArgumentError-不能在nil的上下文中。

使用以下代码对其进行修复。

module ActiveAdmin
  module Views
    module Pages
      class Base < Arbre::HTML::Document
        alias original_build_head build_active_admin_head

        def build_active_admin_head
          original_build_head

          within head do
            text_node Gon::Base.render_data({})
          end
        end
      end
    end
  end
end