ruby-on-rails - type - rails test mailer preview
Где я могу разместить вспомогательные методы для представлений ActionMailer? (4)
+1, работало нормально, просто небольшая коррекция:
Вы должны использовать модуль вместо класса в файле помощника:
# mailer_helper.rb
module MailerHelper
def and_join(arr)
# whatever …
end
end
У меня есть метод, который принимает массив строк и соединяет их, чтобы они делали что-то вроде этого:
>> my_arr
=> ["A", "B", "C"]
>> and_join(my_arr)
=> "A, B, and C"
К которому я хотел бы, чтобы у моей почтовой программы был доступ, чтобы я мог вывести некоторую информацию в электронное письмо. Я не могу найти хорошее место, чтобы положить его и положить его в файл application_helper.rb, и он не находит его там. Куда это должно идти?
В моем случае для Rails 5.1 мне пришлось использовать методы include и helper, например:
include ApplicationHelper
helper :application
А затем просто продолжайте использовать метод в обычном режиме.
class MyMailer < ActionMailer::Base
include ApplicationHelper
helper :application
def my_mailer_method
my_helper_method_declared_in_application_helper
..
end
end
На уже отвеченный вопрос, но я не получил, где / что-файл изменить из других ответов SO. Вот как я это сделал:
В нижней части app / config / initializers / devise.rb вы можете добавить это:
Devise::Mailer.class_eval do
helper :application # includes "ApplicationHelper"
end
Этот пример будет включать методы в /app/helpers/application_helper.rb. Вместо этого вы можете включить другой вспомогательный файл - если, например, метод предназначен только для почтовой программы или используется только для одного другого контроллера. Необходимый мне def используется повсеместно, поэтому я вставил этот файл, чтобы все представления могли получить к нему доступ.
Стоит посмотреть на to_sentence
расширения to_sentence
для массивов, которые предоставляет rails.