1

現在、アプリケーションを 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'

誰でもこれを修正するのを手伝ってもらえますか?

ありがとう、
シヴァクマール

4

0 に答える 0