0

ルビーを1.8.xから1.9.3にアップグレードしました。そのプロセス中にポニージェムもアップグレードされたかどうかはわかりませんが、ポイントは、このコードを使用してメールを送信していたことです。

Pony.mail(
    :to => to, 
    :from => from,
    :subject => subject, 
    :body => Nokogiri::HTML(body_with_footer).text, 
    :html_body =>  body_with_footer, #.gsub("\n","<BR>"),
    :attachments => attachment_to_send,
    :via => :smtp, 
    :via_options => {
            :address     => $smtp,
            :port     => $smtp_port,
            :enable_starttls_auto => false
    }
)

attachment_to_sendは、添付するファイルのハッシュである必要があります。ハッシュが空の場合、添付ファイルは送信されませんでした。ハッシュが「」であると文句を言うポニーエラーが発生しました。

そこで、if条件を導入したattachment_to_send==""ので、アタッチメント部分の有無にかかわらずポニーと呼びます。

それを管理する方法はありますか?だから私はポニーと呼ぶコードを1つだけ持っていますか?

4

2 に答える 2

1

次の方法で空の状態をチェックして、添付ファイル配列を準備します。

 tmp_hash = {:to => to, 
             :from => from,
             :subject => subject, 
             :body => Nokogiri::HTML(body_with_footer).text, 
             :html_body =>  body_with_footer, #.gsub("\n","<BR>"),
             :via => :smtp, 
             :via_options => {
                            :address     => $smtp,
                            :port     => $smtp_port,
                            :enable_starttls_auto => false
                             }
             } 

tmp_hash[:attachments] => attachment_to_send
tmp_hash[:attachments] => nil if attachment_to_send.empty?

または直接、

 tmp_hash[:attachments] =>  attachment_to_send if not attachment_to_send.empty?

その後

Pony.mail( tmp_hash)

動作するはずです

于 2012-09-12T06:10:44.113 に答える
1

三項演算子で処理attachment_to_send.empty? ? nil : attachment_to_send

      details = {
            :to => to, 
            :from => from,
            :subject => subject, 
            :body => Nokogiri::HTML(body_with_footer).text, 
            :html_body =>  body_with_footer, #.gsub("\n","<BR>"),
            :attachments => attachment_to_send.empty? ? nil : attachment_to_send ,
            :via => :smtp, 
            :via_options => {
                    :address     => $smtp,
                    :port     => $smtp_port,
                    :enable_starttls_auto => false
            }


Pony.mail(details)
于 2012-09-12T06:20:03.923 に答える