[英]Can I Check if a Controller is Being Called from an AMP page in Rails?
我開始在我的 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)
我該怎么做呢?
簡單的解決方案就是測試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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.