1

我在 ActiveAdmin 中有一个名为统计的自定义页面,我想在其中显示包含数据库数据的图表。

现在我使用了Gon gem并希望通过实例变量将数据传递到我的自定义页面。

通常您会将 gon 线添加到索引操作中

class ProductsController < ApplicationController
  def index
    gon.rabl "app/views/products/index.json.rabl", as: "products"
  end
end

但是我的自定义页面的活动管理员中没有控制器。我该怎么做?还是我必须通过仪表板执行此操作?

4

2 回答 2

9

活动管理员中有控制器,尽管如此,您不能将实例变量传递给 arbre 部分。但是您可以params为此使用哈希:

ActiveAdmin.register_page 'SomePage' do
  menu :label => 'Menu label'

  controller do
    def index
      params[:some_var] = 'value_of_some_var'
    end
  end

  content 'Page title' do
    h2 "This is some_var: #{params[:some_var]}"
  end
end

PS:如果你不想改变params,那么所有的实例变量都存储在@arbre_context.assigns. 你也可能喜欢:

ActiveAdmin.register_page 'SomePage' do
  menu :label => 'Menu label'

  controller do
    def index
      @some_var = 'value_of_some_var'
    end
  end

  content 'Page title' do
    h2 "This is some_var: #{@arbre_context.assigns[:some_var]}"
  end
end
于 2014-01-18T05:24:13.147 回答
1

您的自定义页面是否从“资源”控制器(即您在应用程序中创建的资源)呈现?如果是,那么这就是控制器本身。您可以在控制器中定义任何自定义操作。您可以使用与部分数据相同的策略将数据传递到您的页面,即使用 :locals

于 2012-08-08T05:36:19.220 回答