настройка электронной почты devise_invitable в rails

У меня есть приложение rails с приглашениями по умолчанию. Я хотел бы изменить текст письма и строку темы, но почтовая программа по умолчанию выглядит так:

/app/views/devise/mailer/invitation_instructions.html.erb

<p><%= t("devise.mailer.invitation_instructions.hello", email: @resource.email) %></p>

<p><%= t("devise.mailer.invitation_instructions.someone_invited_you", url: root_url) %></p>

<p><%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, :invitation_token => @token) %></p>

<p><%= t("devise.mailer.invitation_instructions.ignore").html_safe %></p>

Я не понимаю, как я мог это отредактировать.

Я нашел этот ресурс: https://github.com/scambra/devise_invitable/wiki/Customizing-for-Different-Invite-use-cases-(emails-etc.). Насколько я понимаю, в нем рассказывается, как изменить тему и как разрешить пользователям создавать собственное пригласительное сообщение.

Но я не хочу, чтобы они могли создать свое собственное сообщение. Я просто хочу отправить системное сообщение, которое вместо того, чтобы говорить «Кто-то пригласил вас ...», будет динамически вставлять имя приглашающего, например «Джон Смит пригласил вас ...». У меня есть атрибуты first_name и last_name в модели профиля, которая принадлежит модели пользователя, поэтому я думаю, что моя почтовая программа должна содержать что-то вроде @user.profile.first_name @user.profile.last_name.


person Sean Magyar    schedule 20.09.2015    source источник


Ответы (1)


Просто беги

rails generate devise_invitable:views

И он будет генерировать локальные копии соответствующих представлений. Затем вы можете отредактировать текст приглашения в /app/views/devise/mailer/invitation_instructions.html.erb.

person Matthew    schedule 13.11.2015
comment
mattkc7, я думаю, это оно. Я имею в виду то, что я вставил сюда, взято из приглашения_instructions.html.erb. Или я что-то пропустил? - person Sean Magyar; 13.11.2015
comment
У меня есть и другая прболема. Если я приглашаю sby, который уже использует приложение, я получаю это сообщение об ошибке: неопределенный метод `input' для #‹ActionView::Helpers::FormBuilder:0x007ff6bea58db0› - person Sean Magyar; 13.11.2015
comment
@SzilardMagyar то, что вы вставили, является копией, которая находилась в драгоценном камне. Выполнив эту команду, она создала локальную копию, доступную для редактирования. Что касается этой другой проблемы, вы говорите, что у вас возникла ошибка при приглашении кого-то, кто уже является пользователем? - person Matthew; 13.11.2015
comment
Кроме того, чтобы получить доступ к приглашенному, вы можете получить имя как: @resource.invited_by.first_name - person Matthew; 13.11.2015
comment
Я имел в виду, что этот формат был чем-то, с чем я не знаком. Другие почтовые программы представляют собой обычный html.erb, в отличие от этого, поэтому я просто не знаю, как его редактировать. Например, unlock_instructions.html.erb выглядит так: ‹p›Hello ‹%= @resource.email %›!‹/p›. Это нормально, но это ‹p›‹%= t(devise.mailer.invitation_instructions.hello, электронная почта: @resource.email) %›‹/p›, и я не понимаю, как с этим справиться. - person Sean Magyar; 13.11.2015
comment
Для второго, да, если я попытаюсь пригласить sby, который уже использует приложение, я получу ошибку, упомянутую выше. - person Sean Magyar; 13.11.2015
comment
для t(devise.mailer.invitation_instructions.hello, email: @resource.email), который обращается к файлу devise.yml для Il8n (guides.rubyonrails.org/i18n.html), в котором есть список шаблонных предложений/фраз и т. д. Вы можете внести локальные изменения в это, но я полностью удалил это и добавил свое собственное предложение. Я думаю, что это файл devise.yml. Что касается приглашения пользователя, уже являющегося частью приложения, мне еще предстоит добраться до этой части (я начал это всего несколько часов назад!) - person Matthew; 13.11.2015
comment
Спасибо маткк. Я вижу, я проверю это. Я был просто удивлен, потому что все остальные были одним и тем же html.erb, а этот просто не вписывался в картину. - person Sean Magyar; 13.11.2015
comment
Вы нашли что-то относительно 2-й проблемы? Вы не сталкивались с этим раньше? - person Sean Magyar; 17.11.2015
comment
Я не мог воспроизвести ошибку при приглашении кого-то, кто 1) уже был пользователем или 2) имел ожидающее приглашение. Я прочитал на странице devise_invitable github о «resend_invitation», в которой говорится, что resend_invitation: повторно отправить приглашение, если пользователь со статусом приглашения приглашен снова. Включено по умолчанию. Ваш выключен? Кроме того, глядя на сообщение об ошибке, которое вы опубликовали о input/formBuilder, похоже, что форма, которую вы публикуете, может быть неправильно сформирована или что-то не так (например, использование simple_form и функция, которой нет в обычном теге rails form_for?) - person Matthew; 18.11.2015