よくネット記事とかでみるやつです。
タイトルがあって、文字列の端っこが...で表記されるやつ。
んで、クリックすると続きが読めると。
Railsではこの...を作ってくれるメソッドが用意されてます。
それがtruncateメソッド。
さっそく使ってみます。
例えば、文字列が10文字多くなったら...がでてくるようにするとしましょう。
[10] pry(main)> hoge = '123456789abcdef'
=> "123456789abcdef"
[11] pry(main)> hoge.length
=> 15
いま変数hogeに文字数15の文字列を代入しました。
このhogeをtruncateしてみます。
[12] pry(main)> hoge.truncate(10)
=> "1234567..."
[13] pry(main)> hoge.truncate(10).length
=> 10
truncateのオプションには何文字までか?を入れます。
今回は、10と入れたので10文字ですね。
...が3文字としてカウントされてるので、7文字以降が...と表記されてます。
じゃあ、hogeが10文字以下でtruncateをするとどうなるか?
[14] pry(main)> hoge = '12345'
=> "12345"
[15] pry(main)> hoge.truncate(10)
=> "12345"
なにも変化しない!
nilはどうか。
[18] pry(main)> hoge.truncate(10)
NoMethodError: undefined method `truncate' for nil:NilClass
from (pry):18:in `<main>'
怒られました。
空の文字列にはどうでしょうか。
[20] pry(main)> hoge.truncate(10)
=> ""
ちなみに、truncateにオプションを何も渡さないと20文字がデフォルトだそうです。