Railsを使うにあたってActive Adminを管理画面に多用しているのですが、ネットになかなか有益な情報が落ちてなかったので、自分が使うやつはまとめてみよう、と思って記事を書いてみました🙌

使えそうなやつ

Modelに紐づかないページ作成

モデルに紐づかないページを作成したいケースでは、下記のように使い分けることでページ作成が可能です

# OK
ActiveAdmin.register 'Order' do
end

# NG
ActiveAdmin.register_page 'Order' do
end

ちなみに中身はcontentで囲んでtableやcolumnなどで表示が可能です

content title: proc { I18n.t('active_admin.dashboard') } do
    table_for Order.all do
      column "user",     :user
      column "レク", :recreation
      # column "Amount",          :amount_in_dollars
    end
    columns do
      column do
        panel 'Recent Posts' do
          ul do
            Order.all.map do |order|
              # li link_to(post.title, admin_post_path(post))
              li order.user
            end
          end
        end
      end
    end
  end

Showのattributes_table_forでlink_to入れたい時

レシーバーに書くデータを突っ込むことで、partner.recreations[n] を取得できる

show do
  attributes_table_for partner.recreations do
    row :title
    row :id do |rec| # ここ!!
      link_to '詳細', admin_recreation_path(rec.id)
    end
  end
end

カスタムなHTMLを入れたい場合

部分テンプレ作って作成するのが吉です

一応elmとかっぽく記述も可能ですが、htmlの方が誰でもわかりやすいかと思うので、こんな感じで作成すると良いかと

テンプレは /views/admin/_chat.html.erb を作成して差し込んでます

show do
    attributes_table do
      row :id
      row :user
      row :recreation
      row :prefecture
      row :city
      row :number_of_people
      row :order_type

      row :created_at
      row :updated_at
    end

    panel 'チャット', style: 'margin-top: 30px;' do
      render 'admin/chat', order: order # 複雑な内容を表示したいので、テンプレ作成して対応
    end
  end

参考記事

ActiveAdmin Forms and date select inputs with Custom Pages