возвращая массив объектов в рельсах - PullRequest
3 голосов
/ 10 декабря 2010

Мне нужно передать массив mailobjects из моего класса rails mailer в соответствующий контроллер, который, как я думал, должен работать, если я просто сделаю

class foo < Actionmailer::Base

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

, но когда контроллер получает mails_array через

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

я получаю:

Ошибка типа в mailsController # index
не могу преобразовать Mail :: Message в массив

я что-то пропустил??Я ожидаю, что mails_array будет в письмах и не могу понять, почему это не так.

Ответы [ 2 ]

2 голосов
/ 11 декабря 2010

Вы звоните foo.bar, но bar определяется как метод экземпляра, а не метод класса.Попробуйте вместо

class foo < Actionmailer::Base      

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

.

0 голосов
/ 11 декабря 2010

Array#concat ожидает, что аргумент будет массивом, но вы передаете Mail::Message. Попробуйте следующее:

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

или

@mails.push(foo.bar(...))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...