Closed1

【Rails】viewテンプレートを使ったHTMLをrenderせずに文字列で取得する

catnosecatnose

RailsのAction Mailerを使ってメールを送信する際にすぐにメールを送信するのではなく、一旦viewテンプレートをもとにHTMLだけを取得しDBに保存したいケースがあった。

以下のような書き方をすることでHTMLを文字列として取得できた(RailsはAPIモードで使用)

html = ActionController::Base.new.render_to_string(
      template: "foo/bar", # app/views内のテンプレートのパス
      # テンプレート内で使用する変数
      locals: {
        example: "hello"
      },
      format: "html",
      layout: false # 使用するレイアウト。無効にする場合はfalse
)
このスクラップは2022/01/06にクローズされました