如何以这种方式对黑子进行分页

如何以这种方式对黑子进行分页

我有以下模型关联:

class Product < ActiveRecord::Base
  has_many :prices

class Price < ActiveRecord::Base
  belongs_to :product

这是我的控制器
class SearchController < ApplicationController

  # Using Sunspot here.
  def index
    @search = Product.search do
      fulltext params[:search]
      paginate(:per_page => 5, :page => params[:page])
    end
    @products = @search.results
  end
end

然后我的观点是:
<%= will_paginate @products %>
<% @products.each do |product| %>
    <%= product.name %>
  <% prices.each do |price| %>
    <%= price.price %>
  <% end %>
<% end %>

假设我有10种产品,每种都有20种不同的价格。我的目标是每页展示5种产品,但如果一页的价格超过了一次最多25种,则价格将被转到下一页。
这里有两个不同的例子说明我希望它做什么:
 Product 1, 2, 3, 4 + 5 Prices each = same page
 Product 5 + 6 Prices = this Product with Prices on next page


Product 1 + 23 prices = same page
Product 2 + 20 prices = next page with Product and prices

我怎样才能做到这一点?

最佳答案

我首先想到的是对价格模型的质疑:

prices = Price.joins(:product).where(:product_id => [1,2,3]).paginate(:page => params[:page])

为了让你的观点更容易:prices.map! { |p| p.product }

关于ruby-on-rails - 如何以这种方式对黑子进行分页?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8113402/

10-13 01:31