#ruby-on-rails #views #mailer
#ruby-on-rails #Вид #mailer
Вопрос:
Используя Rails 3. Согласно первому фрагменту кода ниже, трудно выполнить поиск в Google, что означает эта ошибка при попытке отрисовки части из моего представления mailer.
Это ошибка:
ActionView::Template::Error (undefined method `long_date' for #<#<Class:0x00000102452ab0>:0x00000102440b30>):
Вот мое представление mailer (email_note.html.erb)
<div style="width:500px;">
<%= render :partial => "shared/note", :object => @note %>
</div>
Это вызов, который я выполняю в своем partial, который выдает ошибку
<%= long_date(примечание.created_at) %>
long_date всегда срабатывало, когда я предоставлял частичные объекты @note из других действий (например, «показать» в моем notes_controller). это метод
def long_date(date)
date.strftime('%A %b %e, %G')
end
Вот мой класс ActionMailer (адрес и note_id отправляются из действия «email» в моем notes_controller)
class UserMailer < ActionMailer::Base
default :from => "gminett@gmail.com"
def email_note(address,note_id)
@note = Note.find(note_id)
mail(:to => "#{address}", :subject => "Note from repository: #{@note.subject}")
end
end
Мне кажется, rails (скорее всего, из-за некоторой оплошности с моей стороны) не интерпретирует мой объект @note как класс Note, но я не знаю, как это исправить. Помощь очень ценится.
Ответ №1:
Это связано с тем, что по умолчанию шаблоны ActionMailer не используют те же помощники, что и шаблоны ActionView. Если вам нужно использовать помощников в ваших шаблонах mailer, попробуйте включить модуль в свой класс ActionMailer:
include DateTimeHelper
Комментарии:
1. Когда я добавляю включить DateTimeHelper чуть ниже моего
2. … (слишком быстрый ввод) class UserMailer < ActionMailer::Base я получаю следующую ошибку: NameError (неинициализированная константа UserMailer::DateTimeHelper):
3. Скорее всего, вам придется запросить файл над программой mailer. Это работает?