0

如何在 Rails 的单个页面上显示父子关系?我不需要表格,因为我只想显示信息(无需编辑或更新)。父级是客户,子级是订单。我希望能够选择一个客户,显示一些客户信息,例如地址,并以行格式列出所有订单。谢谢。

4

2 回答 2

1

您在这里想要什么并不完全清楚。我假设您想要一个客户列表,当您单击其中一个时,另一个页面将填充其详细信息。如果是这样,最好的解决方案是使用 Ajax 事件,该事件将从服务器获取详细信息并将其放置在给定的 div 中。customers_controller 中的操作如下:

def details
  @customer = Customer.find(params[:id])     
  render 'details', :layout => false               # remember to add view 'details'
                                                   # and appropriate route in routes.
end

和 javascript (jQuery) (注意它不是完美的 ajax 调用,它不处理多次点击和其他问题,但应该让你开始)

$('.customer-row').click(function() {
    customer_id = $(this).data('id');
    $.ajax({
        url: "/customers/" + customer_id + "/details",
        type: "get",
        success: function(details) {
            $('#customer_details').html(details)
         }
    });
});

然后在您的基本视图中,您需要在某处拥有 id 为“customer_details”的 div,并且每个客户行应该看起来像 class="customer-row">。

就如何在详细信息视图中访问子对象而言,它很简单: <% @customer.orders.each do |order|> # display order <% end %>

于 2013-08-07T19:28:24.163 回答
0

假设您的模型关联设置正确..

在控制器中,

@customer = Customer.find(params[:id])
@orders = @customer.orders.all

然后在视图中,使用 orders 变量。

于 2013-08-07T19:02:36.703 回答