【Rails】文字列を省略表示できるメソッド
はじめに
今回は、一覧画面で本文を表示するときなどに便利な、長い文字列を省略して表示することができるメソッドをご紹介します。
環境
- OS: Windows
- IDE: Cloud9
- Ruby-3.1.2
- Rails 6.1.7.6
truncateメソッド
文字列を省略することができるメソッドです。
デフォルトでは30文字に省略され、文末は「 … 」と表示されます。
"文字列".truncate
の形に( )
で字数を指定することで、何文字に省略するか決めることも可能です。
例えば15文字に省略したい場合は以下のようになります。
"これはサンプルです。これはサンプルです。これはサンプルです。".truncate(15)
=> "これはサンプルです。これ..."
※ 文末の...(3点)
も含めた15文字が表示されます。
使い方
truncateメソッドはオプションをつけることで様々な指定ができます。
これから紹介するオプションは3つ。内容は以下の通りです。
オプション | 説明 | デフォルト値 |
---|---|---|
:length | 切り捨ての桁数 | 30 |
:separator | 切り捨てる箇所を表す文字列 | |
:omission | 切り捨て時に末尾に付与する文字列 | … |
基本的な書き方はこちら。
"文字列".truncate(, オプション)
truncate(文字列 [, オプション])
ではオプションとそれぞれの使い方を見てみましょう。
lengthオプション
省略して表示する文字数を指定できるオプションです。
※指定した字数には、文末に表示される「...」の3文字が含まれます。
基本形は、truncate(文字列, length: 字数)
<!-- 投稿本文の表示を60文字に省略したい場合 -->
<%= truncate(post.body, length: 60) %>
separatorオプション
どのポイントで省略するか指定できるオプションです。
<!-- 10文字で切り捨てた内、「。」の箇所で省略する場合 -->
"これはサンプル。これはサンプル。これはサンプル。".truncate(10, separator: "。")
=> "これはサンプル..."
<!-- 20文字で切り捨てた内、「。」の箇所で省略する場合 -->
"これはサンプル。これはサンプル。これはサンプル。".truncate(20, separator: "。")
=> "これはサンプル。これはサンプル..."
ヘルパーメソッドとしての使用例
<%= truncate(post.body, length: 20, separator: '。') %>
=> "これはサンプル。これはサンプル..."
omissionオプション
文末につく文字列を指定できるオプションです。
これを指定しない場合、デフォルトは「...」で表示されます。
<!-- 表示するのは20字。文末には「~~~」をつけたい場合 -->
<%= "これはサンプル。これはサンプル。これはサンプル。".truncate(20, omission: '~~~') %>
=> "これはサンプルです。これはサンプル~~~"
ヘルパーメソッドとしての使用例
<%= truncate(post.body, length: 60, omission: '~~~') %>
余談
truncateはブロックを使って書くこともできます。
省略した文字列にdo ... end
で中にlink_to
を使えばYouTubeのコメントやXのように続きを表示するリンクテキストを貼ることができますね。
<%= truncate(post.body, length: 60) do %>
<%= link_to '続きを表示する', post_path(post.id) %>
<% end %>
今回は長い文字列を省略して表示することができるtruncateメソッド
をご紹介しました。
ヘルパーメソッドとしても使用できるためとても便利です。ぜひ使ってみてください。
最後まで読んでいただきありがとうございました。
新しい情報はどんどんキャッチしていきたいので、プラスの情報や修正点等ありましたらご連絡いただけますと幸いです。
Discussion