我使用ActiveAdmin创建了一个自定义页面,如下所示:
ActiveAdmin.register_page "message_list" do
controller do
def index
@collection = client().account.messages.list.sort_by{ |message| Date.rfc2822(message.date_sent) }.reverse
render :layout => 'active_admin'
end
end
end
我创建了一个index.html.erb文件,其中包含我要在此页面上显示的表格。然而,这不是最佳的。如何使用也带有分页的活动管理标准表格布局并将其与我的表格信息一起显示?我知道ActiveAdmin PageDSL Class不包含#index,因此我不能简单地执行:
index do
selectable_column
id_column
column :to
column :from
default_actions
end
除了在自定义页面上实现ActiveAdmin的表格布局外,如何更改页面本身的标题?截至目前,它被称为“索引”。
答案 0 :(得分:10)
更简单的方法是为您的邮件类Message
定义ActiveAdmin资源,并将操作限制为仅允许:index
。
ActiveAdmin.register Message do
actions :index
index do
selectable_column
id_column
column :to
column :from
default_actions
end
controller do
def scoped_collection
super.where(account_id: account.id).order(:date_sent)
# Or provide a custom collection similar to the current implementation:
# client().account.messages.list.sort_by{ |message| Date.rfc2822(message.date_sent) }.reverse
end
end
end
如果需要,还可以通过:as
方法提供#register
选项来重命名资源:
ActiveAdmin.register Message, as: "Account Message" do
# ...
end
答案 1 :(得分:3)
虽然如果您可以使用ActiveAdmin资源而不是自定义页面,但已接受的答案效果很好,但可以通过Arbre在自定义页面上获取索引样式表:
<%=
Arbre::Context.new({}, self) do
table_for(client().account.messages, sortable: true, class: 'index_table') do
column :id
column :created_at
end
end
%>