[Ruby on Rails]ERBテンプレートをmodelとかclassとかで文字列として扱う方法

controllerでERBテンプレートを扱うのは簡単ですよね。
しかしmodelやクラスなどでどうERBテンプレートを使用するのか気になったのでまとめてみました。

パターン1

ERB.newを使うぜよ

このパターンはヒアドキュメントのHTMLが使用できちまうんだ。

パターン2

ActionView::Base.newを使うぜよ

このパターンは何が良いかというと
なんと普通のcontrollerで使用していたrenderが使えるのです。

何を言っているのかわからない人向けの例

てな感じね。

まとめ

結果的にはどちらも同じテンプレートを使用しているので同じ文字列になって帰ってきた。
まぁ汎用性を考えると圧倒的にパターン2の方が良い気がする。
部分テンプレートも使用できるので理由がなければパターン2でしょうね。
わからんけど。

参考

rails runnerやmodelからapp/views/に有るテンプレートを使ってhtmlを生成したい
Rubyのヒアドキュメントの代わりにERBを使う

スポンサードリンク