我的目标是让具有匹配属性的循环结果具有相同颜色背景的行
这是我的尝试:
控制器:
vendor_products = VendorProduct.where(vendor_id: current_user.id)
@vendor_orders = Order.where(product_id: vendor_products.map { |vp| vp.product_id}).order(created_at: :desc)
表单:
<% @vendor_orders.each do |order, cart_id| %>
<tr class="ok">
<% if order.cart_id.present? && order.cart_id == order.cart_id %>
<td><%= order.id %></td>
<td><%= order.cart_id %></td>
.....
<% else %>
<td><%= order.id %></td>
<td><%= order.cart_id %></td>
.....
<% end %>
</tr>
<% end %>
(已尝试在<tr>
内部/外部执行if
语句)
风格:
.ok:nth-child(odd) {
background: red;
}
.ok:nth-child(even) {
background: blue;
}
我的目标是如果订单的cart_id匹配,那么匹配cart _id的x个订单具有相同的背景颜色,这样就可以知道它们是相同的购物车。
示例:
ID | Cart
1 | 1 (red)
2 | 1 (red)
3 | nil
4 | 2 (blue)
5 | 2 (blue)
因此,ID 1和2的行将为红色,ID 4和5的行将为蓝色。3没有颜色,因为它不属于任何购物车。此外,希望这只有多个项目的手推车。
有些订单没有购物车,只有一个产品与之关联。有些订单是使用购物车创建的,购物车将具有多个行项目。
因此,基本上,如果存在orders cart_id?并且cart.line_items.count > 1,则所有与其关联的订单都具有相同的颜色。
型号:
**cart**
has_many :line_items, dependent: :destroy
has_one :order
...
**line items**
belongs_to :cart
...
**order**
belongs_to :cart
我的尝试什么也做不了。所有的结果都会变成红色。
我标记JS和JQ只是为了以防万一,因为我认为这是一个可行的选择。
https://stackoverflow.com/questions/56729086
复制相似问题