Active Admin:传递自定义页面的实例变量

时间:2012-06-06 15:12:48

标签: ruby-on-rails controller activeadmin

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

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

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

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

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

2 个答案:

答案 0 :(得分: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

P.S。:如果您不想更改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

答案 1 :(得分:0)

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