-
Notifications
You must be signed in to change notification settings - Fork 71
フォームにメッセージテンプレートをセットする方法
ymmtd0x0b edited this page Jul 25, 2023
·
8 revisions
#6370 によりメッセージテンプレートを扱うクラスを作成しました。
YAML形式で作成したメッセージテンプレートを MessageTemplate.load
から呼び出すことでハッシュに変換することができます。また、事前に ERB をテンプレート内に埋め込めば一部の情報を動的に変更する事も可能です。
例えば、「イベントを作成した際、お知らせページを自動作成しタイトルとイベント内容に作成したイベントの内容を反映させたい」という状況があったとします。
{イベント名}を開催します🎉
<!-- このテキストを編集してください -->
{イベント名}を開催します🎉
- 開催日時
- {イベント開始日時} 〜 {イベント終了日時}
- 会場
- {会場}
- 定員
- {定員}
- 募集期間
- {募集開始日時} 〜 {募集終了日時}
---
{イベントの詳細}
## 参加登録はこちら
https:xxxxxxxxx(イベントページのURL)
---
この場合以下の手順を踏むことで実現できます。
-
イベントを作成した際に、自動作成するお知らせページのテンプレートを作成する
config/message_templates
に手動で YAMLファイル を作成してください。
例: config/message_templates/event_announcements.yml -
任意のキーに表示したいテンプレートを記述する
title: <%= "#{event.title}を開催します🎉" %>
description: |
<!-- このテキストを編集してください -->
<%= "#{event.title}を開催します🎉" %>
- 開催日時
- <%= "#{I18n.l event.start_at} 〜 #{I18n.l event.end_at}" %>
- 会場
- <%= event.location %>
- 定員
- <%= event.capacity %>
- 募集期間
- <%= "#{I18n.l event.open_start_at} 〜 #{I18n.l event.open_end_at}" %>
---
<%= event.description %>
## 参加登録はこちら
<%= Rails.application.routes.url_helpers.event_url event %>
---
- コントローラーでメッセージテンプレートを読み込む
ERB を埋め込んでいる場合はテンプレート読み込み時にparamsオプション
が必要になります。
# app/controllers/announcements_controller.rb
event = Event.find(params[:event_id])
template = MessageTemplate.load('event_announcements.yml', params: { event: event }) # ここでメッセージテンプレートを読み込んでいる
@announcement.title = template['title'] # 読み込んだ後はメッセージテンプレート内のキーに対応したハッシュを指定する事で各テンプレートを呼び出せます
@announcement.description = template['description']
以上でOKです。
メッセージテンプレート内でヘルパーを利用したい場合はフルパスで記述する必要があります。