Chcę, aby wiadomości e-mail wysyłane z ActionMailer zawierały obrazy, które prowadzą do mojej aplikacji. W moim środowisku programistycznym, na przykład:Jak uzyskać pełny adres URL obrazu w asynchronicznym programie pocztowym Rails?
<img src="http://myfullappurl.dev/assets/myimage.png">
mam to w moim development.rb
config.action_controller.asset_host = 'myfullappurl.dev'
config.action_mailer.asset_host = config.action_controller.asset_host
config.action_mailer.default_url_options = { host: 'myfullappurl.dev', only_path: false }
Ale nie mogę dostać moje szablony mail, aby uczynić pełny adres URL w każdym z tych sposób:
asset_path('myimage.png')
asset_path('myimage.png', only_path: false)
image_url('myimage.png')
wiele podobnych pytań na ten temat są odbierane przez robi coś takiego:
"#{request.protocol}#{request.host_with_port}#{asset_path('image.png')}"
Ale ponieważ moje e-maile są wysyłane asynchronicznie z Sidekiq, nie ma takiego obiektu, jak gdyby był, gdyby zostały wysłane synchronicznie w kontrolerze.
Czy brakuje rzeczy oczywistej, czy muszę walczyć z Railsami, aby to zrobić? Używam Rails 4, ale jestem pewien, że wszystko, co działa w wersji 3.1/3.2, powinno wystarczyć.
DZIĘKUJEMY. To było rozwiązanie do pobierania szyn 4.1.1 do wyświetlania adresów URL pełnego obrazu w wiadomościach e-mail w formacie HTML. –
Kolejne niedoceniane odpowiedzi na SO. również, myślę, że lepiej jest używać https w większości przypadków, które nie są dev env. –
Nie doświadczyłem żadnych problemów podczas dodawania protokołu do 'action_controller.asset_host', nie jestem pewien czy to zachowanie się zmieniło. Poprawka działa tak, jak opisano. :) – lime