2

メールの送信で奇妙な問題が発生しています。この例外が発生します:

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'

私のweb_reservations_controllerには、単純なメソッド呼び出しがあります

TestMailer.deliver_send_email

そして私のTesMailerは次のようなものです:

class TestMailer < ActionMailer::ARMailer
  def send_email
    @recipients = "xxx@example.com"
    @from = "xxx@example.com"
    @subject = "TEST MAIL SUBJECT"
    @body = "<br>TEST MAIL MESSAGE"
    @content_type = "text/html"
  end
end

何か考えはありますか?

ありがとう!ロベルト

4

2 に答える 2

1

問題は、ar_mailerがメッセージの保存に使用しているモデルにあります。バックトレースで、initializeを呼び出すときにActiveRecord::Base.createから例外が発生していることがわかります。通常、ActiveRecordコンストラクターは引数を取りますが、この場合、モデルは引数を取りません。ar_mailerは、Eメールと呼ばれるモデルを使用する必要があります。app / modelsディレクトリにこのクラスがありますか?もしそうなら、初期化で何かが上書きされますか?初期化をオーバーライドする場合は、必ず引数を指定してsuperを呼び出してください。

class Email < ActiveRecord::Base
  def initialize(attributes)
    super
    # whatever you want to do
  end
end
于 2008-09-26T07:09:25.807 に答える
0

email_classが正しく設定されていることを確認してください:http ://seattlerb.rubyforge.org/ar_mailer/classes/ActionMailer/ARMailer.html#M000002

また、インスタンス変数は使用しないでください。試す:

class TestMailer < ActionMailer::ARMailer
  def send_email
    recipients "roberto.druetto@gmail.com"
    from "roberto.druetto@gmail.com"
    subject "TEST MAIL SUBJECT"
    content_type "text/html"
  end
end

ドキュメントから:bodyメソッドには特別な動作があります。それは、そのキーが指す値を含むハッシュ内の各キーにちなんで名付けられたインスタンス変数を生成するハッシュを取ります。

したがって、このようなものが上記のメソッドに追加されました。

body :user => User.find(1)

@userテンプレートで使用できるようになります。

于 2008-09-25T12:42:02.553 に答える