Nao000のぶろぐ

蝶を追っている少年になりたい

【Elixir Phoenix】Phoenixのtemplateで1つの改行に1つのbrタグを対応させる

目次

  1. バージョン情報
  2. 目的
  3. 結論
  4. 参考文献

バージョン情報

Elixir: 1.8.1

Phoenix: 1.4.2

目的

DBから改行付きデータをtemplateに出力する際に Phoenix.HTML.Format.text_to_html/2 を使って出力するかと思います。

この関数の仕様上、2つ以上の改行があっても1つのpタグに変換されてしまいます。なので、改行を利用した文章の表現が難しいです。

結構調べた結果それ用の関数が用意されてなさそうなので、Noobな私はelixirforumで質問しました。

速攻で回答が来て、しかも望んでいた通りの処理になったので共有します。

結論

str
|> String.split("
", trim: false)
|> Enum.intersperse(Phoenix.HTML.Tag.tag(:br))

改行コード区切りで文字列をリストに変換 ⇒ リストの各要素の間にbrタグを挿入、という感じですね。

参考文献