1

这可能是一个非常简单的问题,我很抱歉 - 我是 Rails 新手。

我有 2 个控制器 - 客户和订单。我已经知道了,当客户下订单时,他们的 id 被传递到一个隐藏字段中,以便订单表中的 customer_id 字段具有他们的 id。所以所有订单都有下订单的客户的 ID。我想要做的是让客户的显示视图显示他们的所有订单 - 所以所有订单都有他们的 id。

我有客户有_许多订单和订单属于_客户等。我如何引用客户/订单来提取正确的信息?我是否需要在控制器的显示操作中添加额外的信息?我已经尝试了我能想到的一切!到目前为止,我已经能够获得所有信息的哈希值以显示在显示视图中,但我无法获得个别信息位出现 - 例如 order.price。

我基本上想要客户显示视图中的订单详细信息表 - 订单价格,放置日期等。任何帮助将不胜感激,谢谢!

编辑:我现在有了这个 - 但无法让 line_items 位工作。关系是这样工作的:客户有很多订单,订单有很多行项目,行项目属于产品。我怀疑它不工作的原因是因为belongs_to。

<% @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 %>
4

2 回答 2

0

您不需要向控制器show操作添加任何内容。

在您的客户show视图中,您可能有权访问一个@customer对象。因为你的 has_many,那会有一个 collection @customer.orders。因此,在视图中,您可以执行类似的操作

<table>
<thead>
   <td>Item</td>
   <td>Quantity</td>
   <td>Price</td>
   <td>Date Placed<td>
</thead>

<% @customer.orders.each do |order| %>
<tr>
   <td><%= order.item.name %></td>
   <td><%= order.quantity %></td>
   <td><%= order.price %></td></tr>
   <td><%= order.date_placed %></td>
</tr>
<% end %>

</table>

显然,我正在编造order您想要显示的可能字段,但这应该会给您这个想法。

于 2012-06-18T15:19:04.380 回答
0

在你的表演动作中:

  def show
    @customer = Customer.find(params[:id])
  end

在您的 routes.rb 中:

resources :customers

在您看来:

<table>
<% @customer.orders.each do |order| %>
  <tr>
    <td><%= order.id %></td>
    <td><%= And Other Your Order Fields %></td>
  </tr>
<% end %>
</table>
于 2012-06-18T15:23:13.527 回答