Rails Ajax分页/无限滚动-保持快速高效吗?

我有一个非常经典的ajax分页案例,其中我对记录进行分页(使用Kaminari),并且当用户单击“加载更多”按钮时,应通过ajax加载并插入下一页/记录集。

问题在于,我看到的大多数示例都非常简单,带有类似于以下内容的索引操作:

def index
  users = User.page(params[:page]).per(10)
end

分页(或加载更多)按钮只是继续使用下一个page参数调用该索引操作。

问题是,我的索引操作还具有很多的功能,当我想要的只是用户记录的下一页时,我不想运行所有代码。缓慢而不必要的。

按照惯例,最干净的方法是什么?我的想法是在index之外还添加另一种方法

def load_more_users
  users = User.page(params[:page]).per(10)
end

然后分页调用那个而不是索引。但是,是否有一种整洁的方法来执行索引操作中的条件操作,例如检查params[:page]if request.xhr?是否存在?

执行此操作的最佳方法是什么?

iCMS 回答:Rails Ajax分页/无限滚动-保持快速高效吗?

您可以为此使用respond_to

respond_to do |format|
  format.html {
     # Existing index controller code
     # Will render the existing template
  }
  format.js {
     users = User.page(params[:page]).per(10)
     render json: users # Or render a partial
  }
end

Ajax将命中format.js块,初始页面加载将命中format.html块。

本文链接:https://www.f2er.com/2243739.html

大家都在问