Ruby on Rails 3.2 Mailer, localice el campo del asunto del correo
Actualmente estoy escribiendo un correo en RoR 3.2 que enviaría correos que deberían ser localizados en función del idioma de los usuarios. Me las arreglé para mostrar las vistas localizadas correctas pero tengo algunas dificultades con algunos campos que requieren cambiar la configuración regional (como el tema). Ya he leído algunas publicaciones que están en contra de cambiar la configuración regional antes de enviar el correo electrónico. Los usuarios tienen muchos idiomas diferentes y eso significaría cambiar mi configuración regional cada vez que se envía un correo electrónico a un usuario.
Sé que sería posible cambiar la configuración regional, enviar el correo electrónico, volver a cambiar la configuración regional. Esto no se siente como el camino de los rieles. ¿Hay una forma correcta de hacer esto?
Aquí hay un fragmento de código:
class AuthMailer < ActionMailer::Base
add_template_helper(ApplicationHelper)
default :from => PREDEF_MAIL_ADDRESSES::System[:general]
[...]
def invite(address, token, locale)
@token = token
@locale = locale
@url = url_for(:controller => "signup_requests", :action => "new", :token => token.key, :locale => locale)
mail(:subject => "Invitation", :to => address) do |format|
format.html { render ("invite."+locale) }
format.text { render ("invite."+locale) }
end
end
[...]
end
Mis opiniones
auth_mailer
invite.en.html.erb
invite.en.text.erb
invite.it.html.erb
invite.it.text.erb
...
En resumen, en este caso, me gustaría localizar el tema usando @locale, pero no ejecutando: I18n.locale = locale