LoginSignup
2
0

More than 3 years have passed since last update.

Railsのテンプレート機能(ERB)をController(Action View)以外で使う

Posted at

概要

Railsは、テンプレートをアクションで紐付けてくれるので便利ですよね。
Action ViewとERB (Embedded Ruby)ってやつです。
たまに、そのテンプレートを、他の箇所で使いたいことがあります。
調べましたがあまり情報が出てこなかったり、見つけたと思ったら動かなかったりしたので解決した方法を備忘として投稿します。

動作環境

ruby 2.6.5
rails 5.2.3

サンプル

例えばJobとかで利用。

app/views下(任意の場所可)にtemplateを作成。

sample.html.erb
<%= user_name %>さんへ

これはサンプルです。

次にJob。

send_template_job.rb
class SendTemplateJob < ApplicationJob
  queue_as :default

  def perform(*args)
    # テンプレートを使う
    content = ActionView::Base.new('app/views').render(file: 'sample',
                                                       locals: { user_name: current_user.name },
                                                       layout: false)
    # テンプレートを利用して生成した文字列をどこかに送る処理を記載
    # 例えばslackとか

  end
end

こんな感じで書くと、erb内のuser_nameて定義してある変数が文字列として展開され取得できます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0