Ruby on rails 我是否可以检查是否正在从Rails中的AMP页面调用控制器?

Ruby on rails 我是否可以检查是否正在从Rails中的AMP页面调用控制器?,ruby-on-rails,Ruby On Rails,我开始在Rails 5.2应用程序中实现AMP页面。在桌面上,我正在使用Will Paginate gem 然而,对于AMP,我使用的是框架的无限滚动JS,我不想对结果进行分页 因此,在控制器操作中,我想确定用户是否正在查看AMP页面(URL以.AMP结尾),以确定此行的内容(包括分页或排除): @products=@products.order('price DESC,RANDOM()').paginate(第页:参数[:页],每页:24) 我如何做到这一点?简单的解决方案就是测试reques

我开始在Rails 5.2应用程序中实现AMP页面。在桌面上,我正在使用Will Paginate gem

然而,对于AMP,我使用的是框架的无限滚动JS,我不想对结果进行分页

因此,在控制器操作中,我想确定用户是否正在查看AMP页面(URL以
.AMP
结尾),以确定此行的内容(包括分页或排除):

@products=@products.order('price DESC,RANDOM()').paginate(第页:参数[:页],每页:24)


我如何做到这一点?

简单的解决方案就是测试
request.format
。这样你就可以写作了

if request.format == :amp 
  # do not paginate
else
  # all other formats we paginate
end 
但在控制器内部,我们也可以使用显式的
respond\u 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


我认为您需要使用
请求
对象。您可以在这里阅读并确定如何获取
.amp
位。这应该可以帮助你得到它