我有以下模型关联:
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
我怎样才能做到这一点?
答案 0 :(得分:3)
我想到的第一件事就是查询Price模型:
prices = Price.joins(:product).where(:product_id => [1,2,3]).paginate(:page => params[:page])
为了让您的观看更轻松:prices.map! { |p| p.product }