【问题标题】:rails actionmailer error with 'part' methodrails actionmailer错误与'part'方法
【发布时间】:2013-03-24 21:23:42
【问题描述】:

我正在升级 rails 2.3.2 app ot rails 3。 在 MailerFormError 中发送电子邮件时出现未知错误。 MailerFormError 是我的模型: class MailerFormError

一开始我的“deliver_send”方法有错误(undefined method `deliver_sent' for MailerFormError:Class), 我将其更改为“发送”。现在我有了这个:



   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

【问题讨论】:

    标签: ruby-on-rails-3 upgrade actionmailer ruby-on-rails-2


    【解决方案1】:

    1) 对于 Rails 3,要在控制器中发送通知,您必须这样写:

    MailerFormError.sent(@msg).deliver
    

    2) 你必须在Rails 3 way 中重写你的“发送”方法:

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

    您还可以在视图目录 app/views/mail_form_error 中创建文本版本和 html:send.text.erb 和 sent.html.erb

    【讨论】:

    • 我的视图目录必须是app/views/mail_form_error。非常感谢!现在可以使用了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2014-03-29
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多