2010-12-10 18 views
3

je dois passer un tableau de mailobjects de mes rails mailer classe au contrôleur correspondant que je pensais que devrait fonctionner si je fais justeretourne un tableau d'objets dans des rails

class foo < Actionmailer::Base 

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

mais que le contrôleur obtient mails_array via

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

je reçois:

TypeError dans mailsController # Index
ne peut pas convertir Mail :: Message en Array

ai-je raté quelque chose ?? Je m'attendrais à avoir le mails_array dans les mails et ne peux pas comprendre pourquoi ce n'est pas le cas.

+0

'concat' pourquoi cela ne passe mon esprit, haha ​​tqq – ksugiarto

Répondre

2

Vous appelez foo.bar, mais bar est défini comme méthode d'instance, et non méthode de classe. Essayez

class foo < Actionmailer::Base  

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

à la place.

+0

merci vous beaucoup !! ça a aidé ... – hanneswurstes

0

Array#concat s'attend à ce que l'argument soit un tableau mais que vous transmettiez un Mail::Message. Effectuez les opérations suivantes:

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

ou

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

Malheureusement, cela ne permet pas .. le tableau sera rempli mais juste avec le premier élément de' mails_array' bien qu'il devrait être le tout ensemble – hanneswurstes