У меня есть многомерный массив: @line_itemsRails: создать одномерную массив из многомерного массива
У него есть ссылки с моделями, товарами и пользователями.
Я хочу создать одномерный массив из @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 равна нулю.
Может ли любой орган помочь здесь?
Спасибо за чтение!
UPDATE
Моя UserMailer модель:
class UserMailer < ActionMailer::Base
default :from => "[email protected]"
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 => ["[email protected]", "#{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
Я делаю это в модели UserMailer. В качестве необходимости электронной почты cc. Добавлено пользовательское решение в модели UserMailer, но оно дает ошибку «неопределенный метод« кодирование »для # <Массив: 0xacd0528>» для order_controller. В order_controller, UserMailer.welcome_email (current_user, @order) .deliver – user2206724
user2206724, не могли бы вы уточнить вопрос с дополнительной информацией о UserMailer/OrderController? В частности, включите код, который вызывает кодировку 'undefined method 'для #' –
gmile
, добавил UserMailer и ordercontroller, способ, которым он дает ошибку – user2206724