LoginSignup
0
2

More than 1 year has passed since last update.

activeadminの基礎的なコードを理解したい

Posted at

はじめに

activeadminを使った際に、基礎的なコードだが何をしているものかわからなかったので、分からなかった箇所をまとめてみた。

分からなかった下記のコード

app/admin/texts.rb
ActiveAdmin.register Text do
  permit_params :genre, :title, :content

  index do
    selectable_column
    id_column
    column :genre, :text, &:genre_i18n
    column :created_at
    column :updated_at
    actions
  end

  show do
    attributes_table do
      row :id
      row :genre, :text, &:genre_i18n
      row :content
      row :created_at
      row :updated_at
    end
    active_admin_comments
  end

  form do |f|
    f.semantic_errors
    f.inputs do
      input :genre, as: :select, collection: Text.genres_i18n.invert
      input :title
      input :content
    end
    f.actions
  end

  filter :genre, as: :select, collection: Text.genres_i18n.invert.transform_values { |v| Text.genres[v] }
  filter :title
  filter :content
  filter :created_at
  filter :updated_at
end

ActiveAdmin.register

ActiveAdmin.register Text do
#処理
end

app/admin/配下に、管理画面を追加するコマンドで自動生成されるファイルに標準で記述されている構文。この中に処理を記述していく。

permit_params

  permit_params :genre, :title, :content

permit_paramsはデータモデルの有効なパラメータの設定。明示したフィールドのアクセスを許可する。

filter

  filter :genre, as: :select, collection: Text.genres_i18n.invert.transform_values { |v| Text.genres[v] }
  filter :title
  filter :content
  filter :created_at
  filter :updated_at

filterは管理者画面の右側(検索ボックス)のカスタマイズを指定する。
as:は指定した形式にオーバーライドする。
collection:は渡すデータを指定する。

index

index do
    selectable_column
    id_column
    column :genre, :text, &:genre_i18n
    column :created_at
    column :updated_at
    actions
end

アクションに対応した処理を記述。
selectable_columnはチェックボックスの配置を指定。
id_columnはそのまま表示するコンテンツ。
columnはモデルのフィールドに対応したコンテンツを表示。
actionspermit_paramsの値に応じて閲覧編集削除のリンクを表示。

ちなみに対応するカラムのenumはこちら

enums.ja.yml
ja:
  genre: &genre
    invisible: '非表示'
    basic: 'Basic'
    git: 'Git'
    ruby: 'Ruby'
    rails: 'Ruby on Rails'
    php: 'PHP'

  enums:
    text:
      genre: *genre
    movie:
      genre: *genre

show

  show do
    attributes_table do
      row :id
      row :genre, :text, &:genre_i18n
      row :content
      row :created_at
      row :updated_at
    end
    active_admin_comments
  end

attributes_tableはデフォルトの外観を維持する。
rowはモデルのフィールドに対応したコンテンツの表示。
active_admin_commentsはコメントフォームの表示。

from

  form do |f|
    f.semantic_errors
    f.inputs do
      input :genre, as: :select, collection: Text.genres_i18n.invert
      input :title
      input :content
    end
    f.actions
  end

formはフォームのカスタマイズを指定。
f.semantic_errorsはエラーメッセージの表示。  
f.inputsは入力フィールドを表示。
f.inputはモデルのフィールドに対応した入力フィールドを表示。
f.actionsはsubmit/cancelボタンの表示。

最後に

rails g active_admin:resource モデル名を実行した際に作成されるリソースをベースに、上記のコードでカスタマイズするという内容だった。

参考元

Active/Admin公式ドキュメント

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2