今回はrailsのtruncate関数を使って長い文字列を省略して表示させる方法についてご紹介します。
文字列を省略(文字を丸める)するとは?
文字列を省略する(文字を丸める)を簡単に説明すると
例えば、
「今回はrailsのtruncate関数を使って長い文字列を省略する方法についてご紹介します。」
を20文字で省略すると、
「今回はrailsのtruncate関数を…」
このような感じになると思います。このように長い文字列を省略することを「文字を丸める」というそうです。
私もインターンで働いているときに、急に「このdescreption長いから文字丸めといて!」と言われた時は理解できなかったので、
「rails 文字 丸める」
とググりましたね笑
今回使用する関数
-
- truncate ・・・文字を丸める関数。デフォルトは30文字。
- strip_tags・・・HTMLタグを除去してくれる関数。
早速、railsで文字を丸めてみよう
早速、文字を丸めて表示させてみましょう。
<%= truncate("今回はrailsのtruncate関数を使って長い文字列を省略する方法についてご紹介します。") %>
とすると
「今回はrailsのtruncate関数を使って長い文字列を省…」
このようにtruncate関数はデフォルトだと30文字で文字を丸めてくれます。
<%= truncate("今回はrailsのtruncate関数を使って長い文字列を省略する方法についてご紹介します。") , length: 10) %>
「今回はrailsのt…」
文字列の長さを指定したい時はlengthを指定してあげるとこのように指定した段階で文字を丸めてくれます。
ちなみに私のケースの場合articleモデルのdescriptionから引っ張ってきたのですが、HTMLタグが含まれている状況で保存されていたので、
HTMLタグを除去する必要があります。
その場合は、
<% strip_tags(@article.description).truncate(20) %>
このように入力すれば、HTMLタグを除去しつつ、20の段階で文字を丸めてくれます。
strips_tagsとtruncate関数を自作関数にまとめてみよう
自作関数で
まとめてみると
module ApplicationHelper def truncate_description(description) description = strip_tags(description).truncate(200) end end
<% truncate_description(@article.description) %>
このようにまとめることが出来ました。
記述するコードが長くなってしまう場合は関数にまとめてしまうとスッキリしたコードが書くことが出来ます。
私も、関数にまとめるのが苦手なので、意識してスッキリしたコードを記述出来るようにしたいなと思います。