背景
在我的网站中,我试图显示2个表,这些表中的数据是我从另一个网站抓取的,并已放置在一个名为Product的对象中。 Product对象有2个类别,分别作为枚举存储,已注册和未注册。
问题
当我对Kaminari进行分页时出现问题。下面是一些演示问题的图片。
当我在“注册产品”表上单击“ 2”时,“未注册产品”表也将变为“ 2”
我猜是因为两个表中的数据都来自同一个对象?无论如何,下面是相关文件。
我的模型
df<- df%>% mutate(dates = as.Date(ymd(dates)), days_prior =as.integer(days_prior))
df<-df %>% mutate(dates =
as.Date(ifelse(is.na(days_prior),dates,days_prior+lag(dates)),
origin="1970-01-01"))
我的控制器
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
我未注册产品的部分相同,将@registered_products替换为@未注册产品。
index.html.erb
<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 %>
我尝试过的事情
我在浏览Kaminari文档时发现,可以对数组进行分页。所以我尝试了。下面是修改后的文件。
控制器
<h2>Registered Products</h2>
<%= render partial: "registered" %>
<h2>Unregistered Products</h2>
<%= render partial: "unregistered" %>
其他所有相关文件都相同,只是替换为创建的新全局变量。问题仍然存在。
所以我的问题是如何解决此问题,是因为我在同一页面中多次对同一个对象进行分页吗?
感谢阅读,祝您有美好的一天!
答案 0 :(得分:0)
发生此问题的原因是因为您使用相同的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