我有一个自定义页面,该页面将提取一些数据并将其格式化为可以在表中显示的数据。这是一个非常简化的版本:
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
对象传递给视图?
答案 0 :(得分:1)
您可以在视图中加载数据。这样做时,您可以像访问控制器一样访问params
。
content do
data = Entity.find(params[:id]
end
这不是Rails的方式,但是我认为在ActiveAdmin中这完全可以。如果您要加载和处理更复杂的数据,则可以为其创建服务。
如果您觉得需要使用use控制器,可以这样做:
controller do
def index
# your code
end
end
有趣的是,您甚至不需要调用super
-页面就会以两种方式呈现。