如何在ActiveAdmin中包含gazon/gon

3
我正在进行一个使用ActiveAdmin的Rails项目,并希望使用'gem gon'来处理我的javascript文件中的数据发送。 我遇到的问题是,在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个回答

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 可能会有用。

在ActiveAdmin 2.3.1中工作。@bxorcloud,你重启了Rails吗? - mirelon

3

最新稳定版本的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接