在rails中返回一个对象数组

时间:2010-12-10 20:27:53

标签: ruby-on-rails ruby arrays

我需要将一个来自我的rails邮件程序类的mailobjects数组传递给相应的控制器,如果我这样做,我认为应该可以使用

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中的TypeError   无法将Mail :: Message转换为数组

我错过了什么吗? 我希望邮件中有mails_array,并且无法理解为什么不是。

2 个答案:

答案 0 :(得分:2)

您正在调用foo.bar,但bar被定义为实例方法,而不是类方法。尝试

class foo < Actionmailer::Base      

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

代替。

答案 1 :(得分:0)

Array#concat期望参数为数组,但您传递的是Mail::Message。请尝试以下方法:

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

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