2010-12-10 4 views
3

レール内のオブジェクトの配列を返す私はちょうど私はレールからmailobjectsの配列を渡す必要が

class foo < Actionmailer::Base 

    def bar(...) 
     mails_array = Array.new 
     return mails_array 
    end 

を行う場合は、コントローラが経由mails_arrayを取得するよう動作するはずと思っ対応するコントローラへのメーラークラス

@mails = Array.new 
@mails.concat(foo.bar(...)) 

私が取得:

はTypeError mailsControllerの#インデックスで メール::メッセージを配列に変換できません

私は何かを逃しましたか? 私はmails_arrayをメールに入れることを期待しています。なぜそうでないのか理解できません。

+0

は 'concat'、ハハは役立ちません、残念ながらtqq – ksugiarto

答えて

2

あなたはfoo.barを呼び出しているが、barはインスタンスメソッドではなく、クラスメソッドとして定義されます。代わりに

class foo < Actionmailer::Base  

    def self.bar(...) 
     mails_array = Array.new 
     return mails_array 
    end 

を試してください。それが私の心を渡していない理由を

+0

感謝する必要がありますが、ただのうち最初の要素で' をmails_array'されますあなたは非常に!それは...助けた – hanneswurstes

0

Array#concatは、引数が配列であると想定していますが、Mail::Messageを渡しています。次のことを試してみてください。

@mails << foo.bar(...) 

または

@mails.push(foo.bar(...)) 
+0

...配列が満たされたが、それは全体の配列 – hanneswurstes

関連する問題