是否有用于构建“摘要详细信息”类型视图的通用模式?例如,您有一个带有报告视图的发票应用程序,该应用程序需要列出每个客户的标题,并在标题下列出每个客户打开的发票的详细信息。
下面是我在过去尝试过的处理它的方法(使用客户/发票示例),其中没有一个是非常令人满意的:
方法#1:
创建一个连接查询,它将客户详细信息与发票连接起来。在视图循环中,使用实例变量来跟踪正在循环的客户。在循环代码中有一个条件,将当前迭代的客户与最后一个interation的客户进行比较。如果它们不同,则为新客户添加一个标题。
方法#2
使用打开的发票查询客户,然后在视图中对客户进行迭代并嵌套客户迭代,对该客户的未开发票执行另一次迭代,例如:
<% @customers.each do |customer| %>
<%= customer.name %>
<% customer.invoices.open.each do |invoice| %>
<%= invoice.details %>
<% end %>
<% end %>所以,是的。这两种感觉都不太好。方法1看起来像是黑客,方法2似乎会生成太多的查询,尽管它是代码中可读性最强的。
发布于 2014-05-27 19:46:09
看起来像使用ActiveRecord包含选项的经典案例
http://apidock.com/rails/ActiveRecord/QueryMethods/includes
所以在你的控制员那里可以找到顾客
Customer.includes(:invoices).where('customer.name = ?', 'example')https://stackoverflow.com/questions/23897497
复制相似问题