ポートフォリオを作成する際、長文を省略して「続きを読む」とか「...」と表示したいなと思い調べたのでこちらにまとめます。
##結論
truncateメソッドを使います。
##使い方
truncateは2種類あります。
###String
string.rb
"春はあけぼの。やうやう白くなりゆく山際、少し明かりて、紫だちたる雲の細くたなびきたる。".truncate(30) %>
# "春はあけぼの。やうやう白くなりゆく山際、少し明かりて、..."
オプション | 説明 | デフォルト |
---|---|---|
:omission | 省略された文字列の後ろにつける文字列 | ... |
:separator | 区切り文字。中途半端なところで文字列が切れないようにする。日本語だとできない。 | なし |
これらを使うと、
string.rb
"春はあけぼの。やうやう白くなりゆく山際、少し明かりて、紫だちたる雲の細くたなびきたる。".truncate(30, omission: '...続きを読む', separator: ' ')
# "春はあけぼの。やうやう白くなりゆく山際、少...続きを読む"
###TextHelper
texthelper.rb
truncate("春はあけぼの。やうやう白くなりゆく山際、少し明かりて、紫だちたる雲の細くたなびきたる。")
# "春はあけぼの。やうやう白くなりゆく山際、少し明かりて、..."
オプション | 説明 | デフォルト |
---|---|---|
:length | 省略前の文字列長 | 30 |
:omission | 省略された文字列の後ろにつける文字列 | ... |
:separator | 区切り文字。中途半端なところで文字列が切れないようにする。日本語だとできない。 | なし |
:escape | HTMLエスケープ(falseを指定するとエスケープしない) | true |
##実際に使った結果
投稿をしてくれた人の内容を表示をする際に使いました。
<%= truncate(@post.content, length: 50) do %>
<p><%= link_to '続きを読む', @post %></p>
<% end %>
##参考
https://apidock.com/rails/String/truncate
https://apidock.com/rails/ActionView/Helpers/TextHelper/truncate