Rails 3の使用。以下のコードの最初のスニペットによると、メーラービューからパーシャルをレンダリングしようとしたときに、このエラーが何を意味するのかをグーグル検索するのは困難です。
これはエラーです:
ActionView::Template::Error (undefined method `long_date' for #<#<Class:0x00000102452ab0>:0x00000102440b30>):
これが私のメーラービューです(email_note.html.erb)
<div style="width:500px;">
<%= render :partial => "shared/note", :object => @note %>
</div>
これは、エラーをスローしているパーシャルで行っている呼び出しです<%= long_date(note.created_at)%>
long_dateは、他のアクションから部分的な@noteオブジェクトを指定したときに常に機能します(たとえば、notes_controllerの「show」)。これが方法です
def long_date(date)
date.strftime('%A %b %e, %G')
end
これが私のActionMailerクラスです(アドレスとnote_idは私のnotes_controllerの「email」アクションから送信されます)
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クラスとして解釈していないようですが、修正する方法がわかりません。ヘルプは大歓迎です。