Eu quero usar os métodos definidos app/helpers/annotations_helper.rb
em meus modos de exibição ReportMailer (app/views/report_mailer/usage_report.text.html.erb
). Como eu faço isso?
Com base neste guia , parece que oadd_template_helper(helper_module)
método pode fazer o que eu quero, mas não consigo descobrir como usá-lo.
(BTW, existe uma razão para você ter acesso a um conjunto diferente de ajudantes nas visualizações de mala direta? Isso é bastante irritante.)
ruby-on-rails
Tom Lehman
fonte
fonte
Respostas:
Na classe de mala direta que você está usando para gerenciar seus emails:
fonte
No Rails 3, basta usar o método helper na parte superior da sua classe ActionMailer:
Acabei de passar em um bloco, já que só preciso dele no Mailer:
(certifique-se de definir config.action_mailer.default_url_options.)
(e se você usar url_for, não deixe de passar: only_path => false)
fonte
helper :'namespace/mail'
helper 'namespace/mail'
Para todas as malas diretas no Rails 3 (configurando o auxiliar "aplicativo"):
fonte
helper :application
funciona bem no Rails 4.2.1.devise
.helper :application
não funciona neste caso.include ApplicationHelper
fez o trabalhoPara Ruby on Rails 4, eu tinha que fazer duas coisas:
(1) Como Duke já disse, se o ajudante que você deseja adicionar for,
UsersHelper
por exemplo, adicionepara a
ActionMailer
classe derivada (por exemploapp/mailers/user_mailer.rb
)(2) Depois disso, recebi um novo erro:
Para corrigir isso, adicione a linha
para cada um dos
config/environments/*.rb
arquivos. Paraconfig/environments/production.rb
, substitualocalhost
por um host mais apropriado para os URLs gerados pelo auxiliar de produção.P: Para o número 2, por que a exibição de email precisa dessas informações e as exibições regulares não?
R: Como as visualizações regulares não precisam conhecer
host
, uma vez que todos os links gerados são veiculados a partir do host ao qual estão vinculados. Links que aparecem em e-mails não são servidos a partir do mesmo host (a menos que você está ligandohotmail.com
ougmail.com
, etc.)fonte
User::ComposedHelper
Você pode apenas adicionar na sua mala direta
ou qualquer ajudante que você precisa
fonte
(Essa é uma pergunta antiga, mas o Rails evoluiu, então estou compartilhando o que funciona para mim no Rails 5.2.)
Normalmente, você pode querer usar um auxiliar de exibição personalizado para renderizar a linha de assunto de um email e o HTML. No caso em que o assistente de exibição está em app / helpers / application_helper.rb , da seguinte maneira:
Posso criar uma linha de assunto e modelo de email dinâmicos que usam o auxiliar, mas preciso informar ao Rails para usar o ApplicationHelper explicitamente em apps / mailer / user_mailer.rb de duas maneiras diferentes, como você pode ver na segunda e terceira linhas aqui :
Devo mencionar que essas duas linhas funcionam tão bem quanto escolher uma ou outra:
FWIW, o modelo de email em app / views / user_mailer / party_thanks.html.erb se parece com o seguinte:
E o controlador app / controller / party_controller.rb se parece com isso
Eu tenho que concordar com a OP (@Tom Lehman) e @gabeodess que tudo isso parece bastante complicado, dado https://guides.rubyonrails.org/action_mailer_basics.html#using-action-mailer-helpers, então talvez eu esteja perdendo alguma coisa .. .
fonte
no meu caso para o Rails4, eu faço assim:
e
para que você não precise especificar em
add_template_helper
todos os lugares.fonte