Saya ingin menggunakan metode yang saya tetapkan dalam app/helpers/annotations_helper.rb
tampilan ReportMailer saya ( app/views/report_mailer/usage_report.text.html.erb
). Bagaimana saya melakukan ini?
Berdasarkan panduan ini, sepertinya add_template_helper(helper_module)
metode ini dapat melakukan apa yang saya inginkan, tetapi saya tidak tahu cara menggunakannya.
(BTW, apakah ada alasan Anda mendapatkan akses ke perangkat pembantu yang berbeda dalam tampilan mailer? Ini sangat menjengkelkan.)
ruby-on-rails
Tom Lehman
sumber
sumber
Jawaban:
Di kelas mailer yang Anda gunakan untuk mengelola email Anda:
sumber
Di Rails 3, cukup gunakan metode helper di bagian atas kelas ActionMailer Anda:
Saya baru saja melewati satu blok, karena saya hanya membutuhkannya di satu Mailer:
(pastikan untuk mengatur config.action_mailer.default_url_options.)
(dan jika Anda menggunakan url_for, pastikan untuk memasukkan: only_path => false)
sumber
helper :'namespace/mail'
helper 'namespace/mail'
Untuk semua pengirim di Rails 3 (mengatur pembantu "aplikasi"):
sumber
helper :application
berfungsi dengan baik di Rails 4.2.1.devise
.helper :application
tidak berfungsi dalam kasus ini.include ApplicationHelper
berhasilUntuk Ruby on Rails 4, saya harus melakukan 2 hal:
(1) Seperti yang sudah dikatakan Duke , jika helper yang ingin Anda tambahkan adalah
UsersHelper
contoh, maka tambahkanke
ActionMailer
kelas turunan (mis.app/mailers/user_mailer.rb
)(2) Setelah itu, saya mendapat kesalahan baru:
Untuk memperbaikinya, tambahkan baris
ke masing-masing
config/environments/*.rb
file. Untukconfig/environments/production.rb
, gantilocalhost
dengan host yang lebih sesuai untuk url yang dihasilkan helper produksi.T: Untuk # 2, mengapa tampilan email memerlukan informasi ini, dan tampilan biasa tidak?
A: Karena tampilan biasa tidak perlu diketahui
host
, karena semua tautan yang dihasilkan disajikan dari host yang mereka tautkan. Tautan yang muncul dalam email tidak dilayani dari host yang sama (kecuali jika Anda menautkan kehotmail.com
ataugmail.com
, dll.)sumber
User::ComposedHelper
Anda bisa menambahkan di mailer Anda
atau pembantu apa pun yang Anda butuhkan
sumber
(Ini adalah pertanyaan lama tetapi Rails telah berevolusi jadi saya berbagi apa yang cocok untuk saya di Rails 5.2.)
Biasanya Anda mungkin ingin menggunakan penolong tampilan khusus dalam merender baris subjek email dan juga HTML. Dalam kasus di mana view helper ada di app / helpers / application_helper.rb sebagai berikut:
Saya dapat membuat baris subjek dan templat email dinamis yang sama-sama menggunakan helper, tetapi saya harus memberi tahu Rails untuk menggunakan ApplicationHelper secara eksplisit di apps / mailer / user_mailer.rb dengan dua cara berbeda, seperti yang Anda lihat di baris kedua dan ketiga di sini :
Saya harus menyebutkan bahwa kedua baris ini bekerja dengan baik jadi pilih satu atau yang lain:
FWIW, templat email di app / views / user_mailer / party_thanks.html.erb terlihat seperti ini:
Dan pengontrol app / controller / party_controller.rb terlihat seperti ini
Saya harus setuju dengan OP (@ Tom Lehman) dan @ gabeodess bahwa ini semua terasa cukup berbelit-belit karena https://guides.rubyonrails.org/action_mailer_basics.html#using-action-mail-mailer-helpers jadi mungkin saya kehilangan sesuatu .. .
sumber
dalam kasus saya untuk Rails4, saya suka ini:
dan
sehingga Anda tidak perlu menentukan di
add_template_helper
mana-mana.sumber