2008-09-25 7 views
2

전자 메일을 보내는 데 이상한 문제가 있습니다. 내가TestMailer에서 잘못된 인수 개수가 발생했습니다.

TestMailer.deliver_send_email 

을 요구하는 단지 방법이 그리고 내 TesMailer 뭔가처럼 내 web_reservations_controller에서

ArgumentError (wrong number of arguments (1 for 0)): 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/base.rb:642:in `initialize' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/base.rb:642:in `new' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/base.rb:642:in `create' 
/usr/lib/ruby/gems/1.8/gems/ar_mailer-1.3.1/lib/action_mailer/ar_mailer.rb:92:in `perform_delivery_activerecord' 
/usr/lib/ruby/gems/1.8/gems/ar_mailer-1.3.1/lib/action_mailer/ar_mailer.rb:91:in `each' 
/usr/lib/ruby/gems/1.8/gems/ar_mailer-1.3.1/lib/action_mailer/ar_mailer.rb:91:in `perform_delivery_activerecord' 
/usr/lib/ruby/gems/1.8/gems/actionmailer-2.1.1/lib/action_mailer/base.rb:508:in `__send__' 
/usr/lib/ruby/gems/1.8/gems/actionmailer-2.1.1/lib/action_mailer/base.rb:508:in `deliver!' 
/usr/lib/ruby/gems/1.8/gems/actionmailer-2.1.1/lib/action_mailer/base.rb:383:in `method_missing' 
/app/controllers/web_reservations_controller.rb:29:in `test_email' 

:

class TestMailer < ActionMailer::ARMailer 
    def send_email 
    @recipients = "[email protected]" 
    @from = "[email protected]" 
    @subject = "TEST MAIL SUBJECT" 
    @body = "<br>TEST MAIL MESSAGE" 
    @content_type = "text/html" 
    end 
end 

당신이 어떤 생각을 가지고 있습니까 나는이 예외를 받고 있어요?

감사합니다. 올바르게 설정되어 email_class 로베르토

답변

1

문제는 ar_mailer가 메시지를 저장하는 데 사용하는 모델에 있습니다. backtrace에서 초기화가 호출 될 때 ActiveRecord :: Base.create에서 예외가 발생한다는 것을 알 수 있습니다. 일반적으로 ActiveRecord 생성자는 인수를 취하지 만,이 경우에는 모델이 아닌 것처럼 보입니다. ar_mailer는 Email이라는 모델을 사용해야합니다. app/models 디렉토리에이 클래스가 있습니까? 그렇다면 initialize로 재정의 된 것이 있습니까? 당신이 초기화를 오버라이드하고 있다면, 인자를 주어야하고 super를 호출해야한다.

class Email < ActiveRecord::Base 
    def initialize(attributes) 
    super 
    # whatever you want to do 
    end 
end 
0

확인 : http://seattlerb.rubyforge.org/ar_mailer/classes/ActionMailer/ARMailer.html#M000002 또한

는 인스턴스 변수를 사용하지 않습니다. 시도해보십시오 :

class TestMailer < ActionMailer::ARMailer 
    def send_email 
    recipients "[email protected]" 
    from "[email protected]" 
    subject "TEST MAIL SUBJECT" 
    content_type "text/html" 
    end 
end 

본문 : 본문 메서드는 특별한 동작을합니다. 그 키가 가리키는 값을 포함하는 해시에서 각 키의 이름을 딴 인스턴스 변수를 생성하는 해시를 사용합니다.

body :user => User.find(1) 

당신이 템플릿에 @user을 사용할 수 있습니다 :

그래서이 같은 위의 방법에 추가됩니다.

관련 문제