2012-07-27 2 views
0

그래서 디버깅 방법을 모르는 재미있는 행동을 만들어 냈습니다. 나는 모형과 테이블에 의해 뒷받침되는 우편물을 가지고있다. 사용자가 메시지를 만들 때 메서드는 전자 메일을 보낼 연락처 배열을 생성합니다. 콘솔에서 테스트 했으므로 그 곳에서 픽업 할 것입니다.메일러 자체를 반복하지 않게 만드는 방법

모델은 단순히 수신자의 배열을 통해 itterates ...

class ContactMessage < ActiveRecord::Base 
    ... 
    def send_message(user) 
    self.recipients.each do |rec| 
     unless rec.include?("@") 
     contact = Contact.find(rec) 
     to = "\"#{contact.first_name} #{contact.last_name}\" <#{contact.email}>" 
     else 
     to = rec 
     contact = user.contact.new('email' => rec) 
     end 
    ContactMail.direct_mail(user, self, to, contact).deliver 
    end 
    end 

end 

그런 다음 ContactMail.direct_mail 방법에 새 호출의 N 번호를 확인해야합니다.

class ContactMail < ActionMailer::Base 
    helper :mail 
    def direct_mail(user, contact_message, to, contact) 
    @user = user 
    @contact = contact 
    @contact_message = contact_message 
    @theme = @contact_message.theme 
    mail(:to => to, :subject => contact_message.subject, :from => "no-reply" << @user.website.domain, :reply_to => @user.email) 
    end 

    ... 
end 

mail() 메소드는 제공된 @instance 변수를 사용하여 뷰를 렌더링합니다. 모든 것이 잘

<%= @user.website.title %> 
<%= @user.website.motto %> 
============================================================ 
<%= @contact_message.message.html_safe.gsub(/<\/?[^><]*>/i, "") %> 
============================================================ 
This message is from <%= @user.first_name << " " << @user.last_name << " of " << @user.business%> 
Please reply to <%= @user.email %> 
<%= @user.telephone %> 
<%= @user.address_l1%> 
<%= @user.address_l2 unless @user.address_l2.blank?%> 
<%= @user.city << ", " << @user.state << " " << @user.zip %> 
<%= @user.website.domain %> 

좋은, 나는 모든 이메일을받을하기 위해 MailCatcher을 사용하고 단자들이 보내졌다 말했다.

그러나 처음에는 < < @instance 후에 보낸 각 메일이 서로 겹치기 만합니다! 이 (가 전송 된 각 이메일을 점진적으로 악화,이 다섯 번째 메시지가 전송됩니다.)

Healthy Living 
Where massage makes health. 
============================================================ 
asdfasdfasdfasd 
============================================================ 
This message is from Adam Fluke of Healthy Living LLC Fluke of Healthy Living LLC Fluke of Healthy Living LLC Fluke of Healthy Living LLC Fluke of Healthy Living LLC Fluke of Healthy Living LLC Fluke of Healthy Living LLC Fluke of Healthy Living LLC Fluke of Healthy Living LLC Fluke of Healthy Living LLC 
Please reply to [email protected] 
504-638-2222 
1822 Moss St 
Apt E 
New Orleans, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119, AL 70119 
healthyliving.org 

같은 것을 produceses

이 내가 메일 및 내 이해를 바탕으로, 이해하지 못하는 것입니다 메서드 호출에서 보낸 각 메시지는 고유 한 개체 여야하며 전혀 상호 작용하지 않아야합니다. 그러나 분명히 있습니다. 이 문제는 + = 및 < < (텍스트 및 HTML)에서 발생합니다. WTF?

의견이나 도움을 주시면 감사하겠습니다.

답변

0

실제로 <<을 사용하여 인스턴스 변수를 수정하고 있습니다. +을 사용하면 제대로 작동한다고 생각합니다.

+0

상황이 나빠서 git branch를 지우고 다시 시작했습니다. 재 작성의 일부로 나는 대신 +를 사용했습니다. – AdamCooper86

관련 문제