64日目
今日の学習
Ruby on Rails
Active Admin
管理画面のカラム文字数を制限する
Active Adminのgemを利用して作成した、各モデルのindexページを確認してみる。
このように、一部のカラムが著しくテキスト量の多い状態だと、可読性が非常に悪くなっており、スクロールすると手間がかかる。
そこで、この「内容」(Text
モデルのcontent
カラムに格納されている)にある文章の量を制限して、短い行数で表示したいと考えた。
最初に思い至ったのは、カラムの幅を指定して最大pxを決めて表示される文字数を制限しようとする案だったが、Active Adminでは幅を指定することが難しく断念。
そこで、内容にある文字数を制限し、省略する方向で解決をすることにした。 (文字を省略して表示させることを、「文字を丸める」と言うらしい)
今回は、truncate
というRailsで使用できるメソッドを使用する。このメソッドは、長い文字列を省略して表示してくれるため目的にぴったり。
今回は文字数を100文字まで表示させることにしたので、truncate
の引数に100
を渡す。
column :content do |text| text.to_s.truncate(100) end
これで表示がどうなっているかというと...
確かに短くはなったが、ブロック引数の|text|
には、Text
クラスのオブジェクト自体が表示されてしまっている。
今回は、text
のcontent
を呼び出して表示したいため、以下のようにしなければならない。
column :content do |text text.content.truncate(100) end
*ちゃんと文字列を呼び出しているのでto_s
メソッドは削った。
目的通り文字数が制限されて、コンパクトな見た目になった。
これだけのことに1時間以上かかり、最終的な形に至るまでにやんばるエキスパートのメンターの方に助言をいただいた。深謝。