背景
在我的网站上,我试图显示2个表格,其中包含我从其他网站报废的数据,并放入一个名为Product的对象中。 Product对象有2个类别,存储为枚举,已注册和未注册。
问题
当我用Kaminari进行分页时,问题出现了。下面是一些展示问题的图片。
当我在Registered Products表上单击'2'时,Unregistered Products表也会变为'2'
我猜这是因为来自两个表的数据来自同一个对象?无论如何,下面是相关文件。
我的模特
class Product < ApplicationRecord
enum product_type: [:registered, :unregistered, :cosmetic]
paginates_per 8
end
我的控制器
class HomeController < ApplicationController
def index
@registered_products = Product.where(product_type: 0).page params[:page]
@unregistered_products = Product.where(product_type: 1).page params[:page]
end
end
我部分注册产品
<table>
<thead>
<tr>
<th scope='col'>Name</th>
<th scope='col'>Chemical</th>
</tr>
</thead>
<tbody>
<% @registered_products.each do |product| %>
<tr>
<td><%= product.product_name %></td>
<td><%= product.chemical %></td>
</tr>
<% end %>
</tbody>
</table>
<%= paginate @registered_products %>
我对未注册产品的偏爱是相同的,用@unregistered产品替换@registered_products。
index.html.erb
<h2>Registered Products</h2>
<%= render partial: "registered" %>
<h2>Unregistered Products</h2>
<%= render partial: "unregistered" %>
我尝试了什么
我正在浏览Kaminari文档并注意到数组可以分页。所以我试过了。以下是修改过的文件。
调节器
class HomeController < ApplicationController
def index
registered_products = Product.where(product_type: 0).to_a
unregistered_products = Product.where(product_type: 1).to_a
@registered_products_array = Kaminari.paginate_array(registered_products).page(params[:page]).per(10)
@unregistered_products_array = Kaminari.paginate_array(unregistered_products).page(params[:page]).per(10)
end
end
每个其他相关文件都与创建的新全局变量相同。问题仍然存在。
所以我的问题是如何解决这个问题,是不是因为我在同一页面中多次对相同的对象进行分页?
感谢您的阅读,祝您有个美好的一天!
发生此问题的原因是因为您使用相同的params[:page]
属性来浏览页面。这会导致将相同的数字传递给Product
模型的两个查询。您需要这样做才能使其正常工作。
部分注册页面:
...
<%= paginate @registered_products, param_name: :registered_page_no %>
在未注册的页面部分,您将不得不这样做,但具有像unregistered_page_no
这样的唯一名称
在您的控制器中,您需要做的就是:
class HomeController < ApplicationController
def index
@registered_products = Product.where(product_type: 0).page params[:registered_page_no]
@unregistered_products = Product.where(product_type: 1).page params[:unregistered_page_no]
end
end
要了解有关param_name
的更多信息,请阅读文档:https://github.com/kaminari/kaminari#changing-the-parameter-name-param_name-for-the-links