プログラミング備忘録

プログラミングの学習状況をメモしています

64日目

今日の学習

Ruby on Rails

Active Admin

管理画面のカラム文字数を制限する

Active Adminのgemを利用して作成した、各モデルのindexページを確認してみる。

f:id:hasegawa_note:20210712111743p:plain

このように、一部のカラムが著しくテキスト量の多い状態だと、可読性が非常に悪くなっており、スクロールすると手間がかかる。

そこで、この「内容」(Textモデルのcontentカラムに格納されている)にある文章の量を制限して、短い行数で表示したいと考えた。

最初に思い至ったのは、カラムの幅を指定して最大pxを決めて表示される文字数を制限しようとする案だったが、Active Adminでは幅を指定することが難しく断念。

そこで、内容にある文字数を制限し、省略する方向で解決をすることにした。 (文字を省略して表示させることを、「文字を丸める」と言うらしい)

今回は、truncateというRailsで使用できるメソッドを使用する。このメソッドは、長い文字列を省略して表示してくれるため目的にぴったり。

今回は文字数を100文字まで表示させることにしたので、truncateの引数に100を渡す。

column :content do |text|
  text.to_s.truncate(100)
end

これで表示がどうなっているかというと...

f:id:hasegawa_note:20210712112836p:plain

確かに短くはなったが、ブロック引数の|text|には、Textクラスのオブジェクト自体が表示されてしまっている。

今回は、textcontentを呼び出して表示したいため、以下のようにしなければならない。

column :content do |text
  text.content.truncate(100)
end

*ちゃんと文字列を呼び出しているのでto_sメソッドは削った。

f:id:hasegawa_note:20210712112652p:plain

目的通り文字数が制限されて、コンパクトな見た目になった。

これだけのことに1時間以上かかり、最終的な形に至るまでにやんばるエキスパートのメンターの方に助言をいただいた。深謝。

明日はRailsチュートリアル14章に取り掛かりたい。