我开始在我的Rails 5.2应用程序中实现AMP页面。在台式机上,我使用的是Will Paginate gem。
但是,在AMP中,我使用的是框架的无限滚动JS,我不想对结果进行分页。
因此,在控制器操作中,我希望确定用户是否正在查看AMP页面( URL以.amp结尾),以确定此行的内容(包括分页或排除):
@products = @products.order('price DESC, RANDOM()').paginate(page: params[:page], per_page: 24)
我该怎么做呢?
发布于 2020-10-06 15:40:55
简单的解决方案就是测试request.format。这样你就可以写
if request.format == :amp
# do not paginate
else
# all other formats we paginate
end 但是在控制器内部,我们也可以使用显式的respond_to块:
def index
respond_to do |format|
format.amp do
@products = @products.order('price DESC, RANDOM()')
end
format.html do
@products = @products.order('price DESC, RANDOM()').paginate(page: params[:page], per_page: 24)
end
end
end 这将显式地指定控制器方法接受和响应的所有格式。
您可能已经这样做了,但是您必须为index.amp和index.html提供一个视图。
要明确:这也将阻止所有未指定的格式!例如,检索
index.json将得到405 Not allowed。
https://stackoverflow.com/questions/63734698
复制相似问题