Rails:如何在展示页面上仅显示所选订单?

时间:2016-07-24 18:30:15

标签: ruby-on-rails ruby associations

我无法尝试获取订单显示页面,只显示与该订单所属的所有订单商品一起选择的订单。例如:/ orders / 8应该只显示#8的顺序。当我转到此链接时,我当前的代码会显示所有订单。我很确定我需要在控制器的show部分用其他东西替换.all但我似乎无法弄清楚它可能是什么?

The associations are:
orders have many order_items
order_items belong to an order

以下是当前的展示页面视图:

<% @orders.each do |order| %>
      <div class="panel panel-default">
              <div class="panel-heading">
                    <h3 class="panel-title"><p>Order Total = <%= order.total %><p/></h3>
              </div>
             <div class="panel-body">

                <% order.order_items.each do |order_item| %>

                  <p>Order ID = <%= order_item.order_id %>
                 Product ID = <%= order_item.product_id %>
                     Unit Price = <%= order_item.unit_price %></p>

                <% end %>
        </div>
</div>
    <% end %>  

订单控制器:

 class OrdersController < ApplicationController
        def index
            @orders = Order.all

            @order_items = OrderItem.all



        end

      # GET /posts/1
      # GET /posts/1.json
      def show

             @orders = Order.all

      end

    end

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

def show
 @order = Order.find(params[:id])
end

也会在show page中将@orders更改为@order。

答案 1 :(得分:0)

@pavan是对的。此外,您根本不需要<% @orders.each do |order| %>

删除该循环,将@orders更改为@order后,将<%= order.total %>更改为<%= @order.total %>,将<% order.order_items.each do |order_item| %>更改为<% @order.order_items.each do |order_item| %>