1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RailsAdminで表示順を気軽に変えられるようにしたい

Posted at

はじめに

CSVインポート機能の追加くらいで、ほぼ素のままのrails_adminを今まで使ってきていました。
それを最近しみじみ見て、大事そうでもない情報が上の方にあったり、使いそうもないリレーションがところどころに挟まっていたり…使いにくく感じました。
順番を変えるだけでも運用でミスが減るだろうと思い、少しやってみました。

ソース

やっていないこと

項目の非表示はしていません。
rails_adminをどのように運用で使っているのかわからないので、項目の非表示などをして混乱させてもよくないと思ったためでした。
また、表示するものを減らしたい、というような要求が出てきたときには、rails_adminで創意工夫を凝らすより、素直に編集画面を作るようにしようと思っています。

こんなふうになります

↓のように、bodytitleuser_idの順で定義されたArticleモデルがあるとします。

db/schema.rb
ActiveRecord::Schema.define(version: 2020_08_15_021803) do

  create_table "articles", force: :cascade do |t|
    t.text "body"
    t.string "title"
    t.integer "user_id", null: false
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.index ["user_id"], name: "index_articles_on_user_id"
  end

  # :
  # : (省略)

これをrails_adminで見ると↓のようにbodytitleuserの順で表示されます。

localhost_3000_admin_article_1(PC).png

↓のような設定ファイルによって…

config/initializers/rails_admin.yml
preffered_fields:
  article:
    - user
    - title

usertitlebodyの順で表示できるようにします。

localhost_3000_admin_article_1(PC) (1).png

やったこと

上の方に置きたいフィールドをおきにいりということにして、同一ディレクトリ内に置いたYAMLファイルから読みます。おきにいりフィールドを#fieldを使って設定し、残りは#include_all_fieldsでまとめて設定しています。

config/initializers/rails_admin.rb
RailsAdmin.config do |config|

  # :
  # : (省略)
  # :

  # モデルの表示順制御
  settings = YAML.load_file(Rails.root.join('config/initializers/rails_admin.yml'))
  settings['preffered_fields'].each do |model_name, preffered_fields|
    config.model model_name do
      preffered_fields.each do |field_name|
        field field_name.to_sym
      end
      include_all_fields
    end
  end

  # :
  # : (省略)
  # :

end

おわりに

rails_adminをマジマジとみて、かなり使いやすいのと、置き換えでrails_admin相当の便利な入力・編集フォームを作ろうとすると、結構大変だぞ…と思いました。
直近の不便を解消する程度のことはしてもよいと思いましたが、あれこれがんばって工夫する前に、工夫をしたくなったところから徐々に自前で作ったフォームに置き換えていきたいと思っています…。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?