我有一个多维数组:@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
因为食物是零。
任何人都可以帮忙吗?
感谢阅读!
更新
我的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
答案 0 :(得分:4)
我认为这就是你想要的:
array_of_emails = @line_items.map do |line_item|
line_item.product.user.email
end
<强> UPD 即可。如果你有真正的mutidimentinal数组,请使用Array#flatten
:
my_array = [ [1,2], [3,4], [5,6] ]
my_array.flatten # => [ 1, 2, 3, 4, 5, 6 ]