Railsのgem、ActiveAdminを使って管理画面を構築する際に利用した機能のメモ。
※随時更新予定。
ダウンロードリンクを消す。
index download_links: false
全てのparameterを許可する。
permit_params { User.attribute_names.map(&:to_sym) }
カスタマイズしたカラムにソート機能を追加する。
class User < ApplicationRecord
has_many :messages, dependent: :destroy
end
class Message < ApplicationRecord
belongs_to :user, counter_cache: :messages_count
end
controller do
def scoped_collection
super.joins('LEFT JOIN "messages" ON "messages"."user_id" = "users"."id"')
.select('users.*, count(messages.*) as message_count')
.group('users.id')
end
end
index do
column 'メッセージ総数', :message_count, sortable: :message_count
end
newとeditでformの内容を変える。
attributes = User.attribute_names.map(&:to_sym)
attributes.delete(:id)
attributes.each do |attribute|
if f.object.new_record?
f.send(:input, attribute)
else
f.send(:input, attribute, input_html: { disabled: "disabled" })
end
end
member_actionで設定したpageのタイトル編集方法。
member_action :report, method: :get do
@page_title = "レポート"
end
リソースの追加。
rails generate active_admin:resource MyModel
ページネーションの削除。
config.paginate = false
ページネーションの日本語化
views:
pagination:
first: "« 最初"
last: "最後»"
previous: "‹ 前"
next: "次 ›"
truncate: "..."
レコード数が多いテーブルのindexページが重い時は select count(*) from table
を消す
index pagination_total: false do
id_column
column :user_id
...
end
パネルを横並びに表示する
columns do
column do
panel "hogehoge" do
end
end
column do
panel "fugafuga" do
end
end
end
編集画面にエラーメッセージを表示させたい
form do |f|
f.semantic_errors *f.object.errors.keys
f.inputs do
f.input :name
end
end