将分页计数添加到 Rails API 中的相同 GET 响应
Add pagination count to the same GET response in Rails API
我可以实现同样的事情,但是在多个命令中。有什么方法可以将它们和 render
API 响应合并到一个 GET 请求中吗?
列出此页面中的所有记录:
render json: Apartment.paginate(page: 1, per_page: 20)
获取总页数:
render json: Apartment.paginate(page: 1, per_page: 20).total_pages
获取条目总数:
render json: Apartment.paginate(page: 1, per_page: 20).total_entries
对任何方法都满意:合并响应、覆盖响应甚至为每条记录添加计数。
非常感谢!
您可以在一个 json 响应中发送所有 3 个命令,然后您的所有数据都在一个对象中。
@apartments = Apartment.paginate(page: 1, per_page: 20)
render json: {apartments: @apartments,
total_pages: @apartments.total_pages,
total_entries: @apartments.total_entries }
在我的例子中,将响应合并到哈希中,例如render json: {total_pages: @apartments.total_pages, total_entries: @apartments.total_entries, apartments: @apartments}
没有完全发挥作用。
根本原因是serializers/apartment_serializer.rb
没有执行,我必须找到解决方案才能照常执行。因此,如果使用 Active Model Serializer,选项将是:
创建文件(如果尚未创建):
config/initializers/active_model_serializer.rb
# to support multiple response types, convert into format conforming JSON API specification
ActiveModelSerializers.config.adapter = :json_api
apartments_controller.rb:
@apartments = Apartment.paginate(page: 1, per_page: 20)
render json: @apartments, meta: { total_pages: @apartments.total_pages, total_entries: @apartments.total_entries }
我可以实现同样的事情,但是在多个命令中。有什么方法可以将它们和 render
API 响应合并到一个 GET 请求中吗?
列出此页面中的所有记录:
render json: Apartment.paginate(page: 1, per_page: 20)
获取总页数:
render json: Apartment.paginate(page: 1, per_page: 20).total_pages
获取条目总数:
render json: Apartment.paginate(page: 1, per_page: 20).total_entries
对任何方法都满意:合并响应、覆盖响应甚至为每条记录添加计数。
非常感谢!
您可以在一个 json 响应中发送所有 3 个命令,然后您的所有数据都在一个对象中。
@apartments = Apartment.paginate(page: 1, per_page: 20)
render json: {apartments: @apartments,
total_pages: @apartments.total_pages,
total_entries: @apartments.total_entries }
在我的例子中,将响应合并到哈希中,例如render json: {total_pages: @apartments.total_pages, total_entries: @apartments.total_entries, apartments: @apartments}
没有完全发挥作用。
根本原因是serializers/apartment_serializer.rb
没有执行,我必须找到解决方案才能照常执行。因此,如果使用 Active Model Serializer,选项将是:
创建文件(如果尚未创建): config/initializers/active_model_serializer.rb
# to support multiple response types, convert into format conforming JSON API specification
ActiveModelSerializers.config.adapter = :json_api
apartments_controller.rb:
@apartments = Apartment.paginate(page: 1, per_page: 20)
render json: @apartments, meta: { total_pages: @apartments.total_pages, total_entries: @apartments.total_entries }