現在、アプリケーションを 2.3.14 から Rails 3.0 に移植しようとしていますが、次のエラーが発生し、2.3.14 では問題なく動作します。
私のメーラーコードは次のようになります
def welcome_mail(host,vendor_name,from, batch, sent_at = Time.now)
template = MailTemplate.get_template(self.class.to_s,:welcome_mail.to_s,vendor_name,
:greeting => batch.greeting, :batch => batch, :host =>host)
@html_message = template.html_message
@text_message = template.text_message
mail( :subject => batch.subject, :to => get_recipients(batch), :from => from, :date => sent_at ) do |format|
format.html
format.text
end
end
MailTemplate モデルを使用して、DB からメール コンテンツを取得します。
そして私のメーラービュー(welcome_mail.text.html.erbとwelcome_mail.text.plain.erbにはこの行しか含まれていません
<%=@html_message%> - welcome_mail.text.html.erb
<%=@text_message%> - welcome_mail.text.plain.erb
DB からフェッチされたテンプレート内で、名前付きルート (ネストされたルート) profile_batch_url を使用しており、/profile/:profile_id/batch/:batch_id のような URL を生成することになっています。
しかし、メッセージを作成しようとすると
mail = UserMailer.welcome_email(request.host_with_port,get_vendor_name(),email, batch)
次のエラーが表示されます
NameError: undefined local variable or method `controller' for #<MailTemplate:0x000000060dff38>
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/activemodel-3.0.17/lib/active_model/attribute_methods.rb:392:in `method_missing'
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.0.17/lib/active_record/attribute_methods.rb:46:in `method_missing'
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.0.17/lib/action_view/helpers/url_helper.rb:31:in `url_options'
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.0.17/lib/action_dispatch/routing/url_for.rb:131:in `url_for'
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.0.17/lib/action_view/helpers/url_helper.rb:99:in `url_for'
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.0.17/lib/action_dispatch/routing/route_set.rb:201:in `profile_batch_url'
(erb):5:in `text_message'
誰でもこれを修正するのを手伝ってもらえますか?
ありがとう、
シヴァクマール