带有索引表的ActiveAdmin自定义页面

ste*_*ecd 4 ruby-on-rails activeadmin

我使用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
Run Code Online (Sandbox Code Playgroud)

我创建了一个index.html.erb文件,其中包含我要在此页面上显示的表.然而,这不是最佳的.如何使用也带有分页的活动管理标准表格布局并将其与我的表格信息一起显示?我知道ActiveAdmin PageDSL Class不包含#index,因此我不能简单地做到:

  index do
    selectable_column
    id_column
    column :to
    column :from
    default_actions
  end
Run Code Online (Sandbox Code Playgroud)

除了在自定义页面上实现ActiveAdmin的表格布局外,如何更改页面本身的标题?截至目前,它被称为"索引".

Cha*_*esh 11

一种更简单的方法是为您的消息类定义ActiveAdmin资源Message,并将操作限制为仅允许: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
Run Code Online (Sandbox Code Playgroud)

如有必要,还可以通过为方法提供:as选项来重命名资源#register:

ActiveAdmin.register Message, as: "Account Message" do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

  • ActiveAdmin文档中提到了用法:[自定义资源检索](https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#customizing-resource-retrieval) (2认同)

Jos*_*zel 5

如果您可以使用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
%>
Run Code Online (Sandbox Code Playgroud)