Rails 5 API 使用 Kaminari - 如何向客户端提供页数数据?
Rails 5 API using Kaminari - how to provide the page count data to client side?
我已经安装了 Kaminari gem 并且在我的控制器中有以下代码:
# GET /customers
def index
if params[:page]
@customers = Customer.page(params[:page]).per(params[:per_page])
pageCount = (Customer.count / params[:per_page].to_f).ceil
else
@customers = Customer.order('updated_at DESC')
pageCount = 1
end
render json: @customers, meta: { total: pageCount, records: Customer.count }
end
这会尝试在我的响应中添加一个 'meta' 部分,其中包含我在客户端中构建分页控件所需的数据。
问题是如果我发出请求(例如使用 Postman):
localhost:3000/customers?page=1
元数据未添加到响应中。
仅供参考,我基于使用 JSONAPI 在 EmberJS 中使用的代码,但现在我使用的是 Angular2,所以不确定如何将此 'meta' 数据添加到响应中。
你应该这样写
render json: { customers: @customers, meta: { total: pageCount, records: Customer.count } }
在您的示例中,您仅将 @customers
添加到 json 响应,而元部分去了其他地方(不是响应)。因此,要在您的 json 回复中包含您的元部分,请确保它位于正确的位置
我已经安装了 Kaminari gem 并且在我的控制器中有以下代码:
# GET /customers
def index
if params[:page]
@customers = Customer.page(params[:page]).per(params[:per_page])
pageCount = (Customer.count / params[:per_page].to_f).ceil
else
@customers = Customer.order('updated_at DESC')
pageCount = 1
end
render json: @customers, meta: { total: pageCount, records: Customer.count }
end
这会尝试在我的响应中添加一个 'meta' 部分,其中包含我在客户端中构建分页控件所需的数据。
问题是如果我发出请求(例如使用 Postman):
localhost:3000/customers?page=1
元数据未添加到响应中。
仅供参考,我基于使用 JSONAPI 在 EmberJS 中使用的代码,但现在我使用的是 Angular2,所以不确定如何将此 'meta' 数据添加到响应中。
你应该这样写
render json: { customers: @customers, meta: { total: pageCount, records: Customer.count } }
在您的示例中,您仅将 @customers
添加到 json 响应,而元部分去了其他地方(不是响应)。因此,要在您的 json 回复中包含您的元部分,请确保它位于正确的位置