hanneswurstes
hanneswurstes

Reputation: 273

returning an array of objects in rails

I need to pass an array of mailobjects from my rails mailer class to the corresponding controller which i thought should work if i just do

class foo < Actionmailer::Base

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

but as the controller gets mails_array via

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

i get a:

TypeError in mailsController#index
can't convert Mail::Message into Array

did i miss something?? I would expect to have the mails_array in mails and can't understand why it is not.

Upvotes: 3

Views: 2972

Answers (2)

Leo
Leo

Reputation: 38190

You are calling foo.bar, but bar is defined as instance method, not class method. Try

class foo < Actionmailer::Base      

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

instead.

Upvotes: 2

Jeff Paquette
Jeff Paquette

Reputation: 7127

Array#concat expects the argument to be an array but you're passing a Mail::Message. Try the following:

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

or

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

Upvotes: 0

Related Questions