バートリーのさいとうです。
今回は
【Rails】ヘルパーメソッドの返り値の文字列を改行する
この方法について解説していきます。
ヘルパーメソッドを1行で復習すると
「Viewに表示させるものをメソッドであれこれできるもの」
とでも言えるでしょうか。
例えば以下のように、自作のヘルパーメソッドがあるとすると
module ArticlesHelper
def title_name(author, title)
"#{title} by #{author}"
end
end
articlesディレクトリに格納されているViewで
<%= title_name("バートリーのさいとう", "ヘルパーメソッドとは")%>
<!-- 出力結果: ヘルパーメソッドとは by バートリーのさいとう-->
このように引数を渡す形で、module ArticlesHelperに定義したtitle_name(author, title)メソッドを呼び出すことができます。(引数はなくても大丈夫です)
今回は、このヘルパーメソッドで定義したメソッドの返り値が文字列で、View出力するときは改行させたいと思っている人向けに書きます。
あまりこのテーマで語られる記事が存在しないので、一つ参考になれば幸いです。
結論:simple_formatを利用する
結論、simple_formatを利用するだけで実現可能です。
railsドキュメント
github
simple_formatの基本的な使い方をまず確認します。
simple_format(text, html_options = {}, options = {})
ポイントは2つ
- textがsimple_formatによってpタグ付与される
- \nで改行が与えられる or 改行されていたら、</br>タグに変更されて、改行された形で出力される
です。
では、早速今回利用するヘルパーのメソッド定義と実際にViewで利用される例を見ていきましょう。
実例
まずは、helperメソッドからです。
今回は、記事の著者をランク付けしているアプリで、ランクに応じてViewで出力する冠を変更したいとします。
module ArticlesHelper
def describe_user_rank(rank_num)
rank_number = rank_id.to_i
if rank_number == 1
"Awesome Author \n Thanks for always!!"
elsif rank_number == 2
"Great Author \n Thank you very much!"
else
"Good Author \n Thank you!"
end
end
これで、引数のrank_numに応じて出力する文字列を変更することができるヘルパーメソッドを作成できました。
それぞれの文字列に、改行が加えられています。これをsimple_formatなしでやると、改行が判定されずに\nも読み込まれず出力されてしまいます。
そこで、以下のようにViewに記述します。
<%= simple_format(describe_user_rank(rank_num), sanitize: true) %>
これで、改行を反映させることができます。
まとめ
今回は、ヘルパーメソッドと便利なsimple_formatについて解説しました。
短めの記事ですが、少しでも参考になれば嬉しいです。
simple_formatも奥が深そう…
このブログは、月に15本を目標に、実務から学んだプログラミングのあれこれを発信しています。
誰かのためになれば、嬉しいです。
最後まで読んでいただき、ありがとうございました。
それでは。