0

我有一个多维数组:@line_items

它具有与模型、产品和用户的链接。

我想从@line_items 生成一个包含用户电子邮件的一维数组。

像这样的东西:

 emails = @line_items.product.user.email

但它不起作用并给出错误:

 undefined method `user' for #<Array:0xb1a12e74>

对于单个 line_item 它有效。

 email = @line_item.product.user.email

我试图生成这样的数组:

    @line_items.each do |i|
        @foodio.each do |j|
            @foodio[j] = i.product.user.email
        end
    end

但它给

   undefined method `each' for nil:NilClass

因为 foodio 是零。

任何机构都可以在这里提供帮助吗?

谢谢阅读!

更新

我的 UserMailer 模型:

class UserMailer < ActionMailer::Base
  default :from => "email@mealnut.com"

  def welcome_email(user, order)
@user = user
    @order = order
    @line_items = @order.line_items
    @foodio = @line_items.map do |line_item|
  line_item.product.user.email
end   

    mail(:to => user.email, :cc => ["care@mealnut.com", "#{foodio}"], :subject => "Order no. #{order.id}")
   end

  end

订单控制器:

 def process_order
   @order = current_order
   @line_items = @order.line_items
    if @line_items.size > 0
         session[:order_id] = nil
         UserMailer.welcome_email(current_user, @order).deliver
    else
      render :action => "cart"
   end

 end
4

1 回答 1

4

我认为这就是你想要的:

array_of_emails = @line_items.map do |line_item|
  line_item.product.user.email
end

升级版。如果您有真正的多元素数组,请使用Array#flatten

my_array = [ [1,2], [3,4], [5,6] ]
my_array.flatten # => [ 1, 2, 3, 4, 5, 6 ]
于 2013-04-20T18:23:18.610 回答