Quiero usar los métodos que app/helpers/annotations_helper.rb
definí en mis vistas de ReportMailer ( app/views/report_mailer/usage_report.text.html.erb
). ¿Cómo hago esto?
Según esta guía , parece que el add_template_helper(helper_module)
método podría hacer lo que quiero, pero no puedo entender cómo usarlo.
(Por cierto, ¿hay alguna razón por la que tienes acceso a un conjunto diferente de ayudantes en las vistas de correo? Esto es bastante molesto).
ruby-on-rails
Tom Lehman
fuente
fuente
Respuestas:
En la clase de correo que está utilizando para administrar sus correos electrónicos:
fuente
En Rails 3, solo use el método auxiliar en la parte superior de su clase ActionMailer:
Acabo de pasar en un bloque, ya que solo lo necesito en el único Mailer:
(asegúrese de configurar config.action_mailer.default_url_options).
(y si usa url_for, asegúrese de pasar: only_path => false)
fuente
helper :'namespace/mail'
helper 'namespace/mail'
Para todos los anuncios publicitarios en Rails 3 (configuración del asistente de "aplicación"):
fuente
helper :application
funciona bien en Rails 4.2.1.devise
.helper :application
No funciona en este caso.include ApplicationHelper
funcionóPara Ruby on Rails 4, tuve que hacer 2 cosas:
(1) Como ya dijo Duke , si el ayudante que desea agregar es
UsersHelper
por ejemplo, agregara lo derivado
ActionMailer
clase (por ejemploapp/mailers/user_mailer.rb
)(2) Después de eso, recibí un nuevo error:
Para solucionar esto, agregue la línea
a cada uno de los
config/environments/*.rb
archivos. Paraconfig/environments/production.rb
, reemplacelocalhost
con un host más apropiado para las URL generadas por el asistente de producción.P: Para el n. ° 2, ¿por qué la vista de correo necesita esta información y las vistas normales no?
R: Debido a que las vistas regulares no necesitan saberlo
host
, ya que todos los enlaces generados se sirven desde el host al que se vinculan. Los enlaces que aparecen en los correos electrónicos no se sirven desde el mismo host (a menos que esté enlazandohotmail.com
ogmail.com
, etc.)fuente
User::ComposedHelper
Simplemente puede agregar en su correo
o cualquier ayuda que necesites
fuente
(Esta es una vieja pregunta, pero Rails ha evolucionado, así que comparto lo que funciona para mí en Rails 5.2).
Por lo general, es posible que desee utilizar un asistente de vista personalizado para representar la línea de asunto de un correo electrónico, así como el HTML. En el caso en que el ayudante de vista esté en app / helpers / application_helper.rb de la siguiente manera:
Puedo crear una línea y una plantilla de asunto de correo electrónico dinámico que usan el ayudante, pero necesito decirle a Rails que use el ApplicationHelper explícitamente en apps / mailer / user_mailer.rb de dos maneras diferentes, como puede ver en la segunda y tercera líneas aquí :
Debo mencionar que estas dos líneas funcionan igual de bien, así que elija una u otra:
FWIW, la plantilla de correo electrónico en app / views / user_mailer / party_thanks.html.erb se ve así:
Y el controlador app / controller / party_controller.rb se ve así
Tengo que estar de acuerdo con OP (@Tom Lehman) y @gabeodess en que todo esto se siente bastante complicado dado https://guides.rubyonrails.org/action_mailer_basics.html#using-action-mailer-helpers, así que quizás me estoy perdiendo algo ... .
fuente
en mi caso para Rails4, me gusta esto:
y
para que no tenga que especificar en
add_template_helper
todas partes.fuente