Ruby on Rails

【Rails】ヘルパーメソッドの返り値の文字列を改行する

バートリーのさいとうです。

今回は

【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本を目標に、実務から学んだプログラミングのあれこれを発信しています。

誰かのためになれば、嬉しいです。

最後まで読んでいただき、ありがとうございました。

それでは。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA