0

Rails 2.3.2 app otrails3をアップグレードしています。MailerFormErrorでの電子メールメッセージの送信で不明なエラーが発生しました。MailerFormErrorは私のモデルです:class MailerFormError <ActionMailer :: Base

最初に、「deliver_send」メソッド(MailerFormError:Classの未定義のメソッド「deliver_sent」)でエラーが発生しました。これを「send」に変更します。今私はこれを持っています:



   NoMethodError in LeadsController#create
   undefined method `part' for #

コントローラの私のコード:



    @msg = {}
    @msg["errors"] = @lead.errors
    @msg["params"] = params
    #MailerFormError.deliver_sent(@msg)
    MailerFormError.sent(@msg)

これは、送信メソッドを持つ私のクラスです。



      def sent(msg, sent_at = Time.now)
        @subject    = ("Ошибка при заполнении формы").force_encoding('iso-8859-1').encode('utf-8')
        @recipients = 'mymail@gmail.com'
        @from       = 'mymail@gmail.com'
        @sent_on    = sent_at
        @headers    = {}

        part( :content_type => "multipart/alternative" ) do |p|
          p.part :content_type => "text/plain", 
                 :body => render_message("sent.plain.erb", :msg=>msg )
        end

      end
4

1 に答える 1

0

1)Rails 3の場合、コントローラーで通知を送信するには、次のように記述する必要があります。

MailerFormError.sent(@msg).deliver

2)そして、 Rails3の方法で'sent'メソッドを書き直す必要があります。

def sent(msg, sent_at = Time.now)
  ...
  mail(:to => '...', :from => '...', :subject => '...') do |format|
    format.html
    format.text
  end
  ...
end

ビューディレクトリapp/views / mail_form_error:sent.text.erbおよびsent.html.erbにテキストバージョンとhtmlを作成することもできます。

于 2013-03-26T13:38:34.883 に答える