在Rails中返回对象数组

3
我需要从我的Rails邮件发送类传递一个MailObject数组到相应的控制器,我认为只需执行以下操作即可实现:
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,但不明白为什么没有。


concat 为什么没想到呢,哈哈谢谢。 - ksugiarto
2个回答

2
你正在调用foo.bar,但是bar被定义为实例方法而不是类方法。尝试使用Foo.bar来调用它。
class foo < Actionmailer::Base      

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

改为使用。


0

Array#concat 期望传入一个数组作为参数,但是你传入了一个 Mail::Message。请尝试以下操作:

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

或者

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

不幸的是,这并没有帮助。。数组将被填充,但只有来自 mails_array 的第一个元素 尽管应该是整个数组。 - hanneswurstes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接