Это, наверное, очень простой вопрос, я прошу прощения - я новичок в рельсах.Использование has_many/принадлежит для доступа к информации в контроллере - Ruby on Rails
У меня есть два контроллера - клиенты и заказы. У меня есть так, что, когда клиент отправляет заказ, их идентификатор передается в скрытом поле, так что поле customer_id в таблице заказов имеет свой идентификатор. Таким образом, все заказы имеют идентификатор клиента, который его разместил. То, что я пытаюсь сделать, - показать шоу, чтобы клиенты отображали все их заказы - так что все заказы с их идентификатором.
У меня есть заказчик has_many заказов и заказов принадлежит клиентам и т. Д. Как мне обратиться к клиентам/заказам, чтобы извлечь нужную информацию? И мне нужно добавить дополнительную информацию в действие шоу на контроллере? Я пробовал все, что мог придумать! До сих пор я мог получить хэш всей информации, которая будет отображаться в представлении show, но я не могу получить отдельные биты информации - например. стоимость заказа.
Я в основном хочу таблицу деталей заказа в представлении показать клиентов - цена заказа, дата и т. Д. Любая помощь будет очень признательна, спасибо!
Редактировать: У меня теперь есть это - но не получается получить бит line_items. Эти отношения работают следующим образом: клиент имеет много заказов, заказы имеют много позиций, позиции относятся к продуктам. Я подозреваю причину, по которой он не работает, из-за принадлежности.
<% @customer.orders.each do |order| %>
<% order.line_items.each do |line_item| %>
<tr>
<td><%= line_item.created_at %></td>
<% line_item.products.each do |product| %>
<td> <%= product.name %></td>
<% end %>
<td><%= order.email %></td>
</tr>
<% end %>
<% end %>
Спасибо! Это оно! Кроме того, если бы я хотел отображать отдельные элементы из заказа (используя контроллер line_items, который у меня есть), могу ли я просто поместить «has_many: line_items через:: orders» в модель клиента, а затем ссылаться на него как на order.line_item. имя? – ecs
Вероятно, вы не хотите ставить 'has_many through' на клиента для line_items, потому что line_items имеют смысл только в контексте их заказа (' has_many through' заставит клиента иметь большое ведро line_items, не зависящее от заказов). Если порядок has_many line_items, то, когда вы выполняете итерации по заказам (как указано выше) и имеете заданный порядок, вы можете выполнить 'order.line_items.each do | line_item |' и перебирать их как цикл в цикле. –
Можете ли вы опубликовать код для вложенного цикла - я пробовал различные способы сделать это, и я получаю сообщения об ошибках! Спасибо! – ecs