Rails / ActiveAdmin-如何将自定义数据从控制器传递到内容

时间:2019-05-16 18:34:03

标签: ruby-on-rails activeadmin

我有一个自定义页面,该页面将提取一些数据并将其格式化为可以在表中显示的数据。这是一个非常简化的版本:

ActiveAdmin.register_page "My Custom Page" do
  controller do
    @data = [
      { name: "foo"},
      { name: "bar"}
    ]
  end

  content do
    panel "My Panel" do
      table_for @data do
        column("Name") { |row| row[:name] }
      end
    end
  end
end

运行该命令时,出现错误undefined method '[]' for nil:NilClass ,因为传递到块中的变量row为nil。如何正确地将@data对象传递给视图?

1 个答案:

答案 0 :(得分:1)

您可以在视图中加载数据。这样做时,您可以像访问控制器一样访问params

content do
  data = Entity.find(params[:id]
end

这不是Rails的方式,但是我认为在ActiveAdmin中这完全可以。如果您要加载和处理更复杂的数据,则可以为其创建服务。

如果您觉得需要使用use控制器,可以这样做:

controller do
  def index 
    # your code
  end
end

有趣的是,您甚至不需要调用super-页面就会以两种方式呈现。