首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以检查是否从Rails中的AMP页面调用了控制器?

问我是否可以检查是否从Rails中的AMP页面调用了控制器?
EN

Stack Overflow用户
提问于 2020-09-04 12:06:11
回答 1查看 25关注 0票数 0

我开始在我的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)

我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2020-10-06 15:40:55

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

代码语言:javascript
复制
if request.format == :amp 
  # do not paginate
else
  # all other formats we paginate
end 

但是在控制器内部,我们也可以使用显式的respond_to块:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63734698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档