Attualmente sto scrivendo un mailer in RoR 3.2 che invierà mail che dovrebbero essere localizzate in base alla lingua degli utenti. Sono riuscito a visualizzare correttamente le viste localizzate, ma ho qualche difficoltà con alcuni campi che richiedono la modifica delle impostazioni internazionali (come l'oggetto). Ho già letto alcuni post che sono contrari alla modifica delle impostazioni internazionali prima di inviare l'e-mail. Gli utenti hanno molte lingue diverse e ciò significherebbe cambiare la mia localizzazione ogni volta che un utente riceve un'e-mail.Ruby on Rails 3.2 Mailer, localize mail subject field
So che sarebbe possibile modificare le impostazioni locali, inviare l'e-mail, modificare le impostazioni internazionali. Questo non sembra il modo delle rotaie. C'è un modo corretto per farlo?
Ecco un frammento:
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
Le mie opinioni
auth_mailer
invite.en.html.erb
invite.en.text.erb
invite.it.html.erb
invite.it.text.erb
...
In breve, in questo caso, mi piacerebbe di localizzare il: soggetto utilizzando il @locale, ma non eseguendo: I18n.locale = locale
ho accettato la risposta come cuciture più Rails-ish – Oktav
ho provato questo approccio, ma mi dà un 'NameError: non inizializzata UserMailer costante :: I18' Degli indizi? – piffy
Spiacente, ho scritto male I18n, ha 'n' alla fine. –