【发布时间】:2017-08-18 11:15:14
【问题描述】:
尝试学习 Ruby 和 Spree
我的控制器中有一个运行良好的查询:
@products = Spree::LineItem.select("spree_line_items.id,
spree_variants.sku, spree_products.name, spree_line_items.quantity")
.joins(:order).joins(:variant).joins(:product)
.where(spree_orders: {state: 'complete', shipment_state: 'ready'})
当我在视图中运行查询时
<% @products.each do |lineItem| %>
<%= lineItem.id %><br>
<% end %>
这可以正常工作并吐出所有 ID,但我想输出其他位、Sku、Name 和 Quantity,它们都来自其他表。我怎么把他们带到这里来?
如果我引用它们与 ID 相同,我会得到一个委托错误。
【问题讨论】:
-
什么是
@ordersNew?您还没有向我们展示这是如何定义的,所以我不知道为什么会发生错误。附带说明一下,使用snake_case而不是camelCase作为变量名是 ruby convention。 -
那只是一个错字,应该是产品。现已更新
-
您的
select查询是否有充分的理由?为什么不直接返回整个记录?然后你可以做例如product.variant.sku.... 此外,您看到的错误究竟是什么?
标签: ruby activerecord spree ransack