大佬教程收集整理的这篇文章主要介绍了ruby – 使用Her,Faraday在API中进行Rails分页,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个rails应用程序,ServerApp和ClientApp. ClientApp使用Her gem通过API从ServerApp获取数据.在我需要分页信息之前,一切都很棒.
这是我用来获取订单的方法(这使用kamainari进行分页和搜索搜索):
# ServerApp def search @search = Order.includes(:documents,:client).order('id desc').search(params[:q]) @orders = @search.result(disTinct: truE).page(params[:page]).per(params[:per]) respond_with @orders.as_json(include: :documents) end
它在json中返回一个哈希数组,Her用作订单的集合.这很好.
# Response [ { "client_id": 239,"created_at": "2013-05-15T15:37:03-07:00","id": 2422,"ordered_at": "2013-05-15T15:37:03-07:00","origin": "online","updated_at": "2013-05-15T15:37:03-07:00","documents": [ { ... } ] },... ]
但我需要分页信息.看起来我需要send it as metadata with my json.所以我改变了对此的回应:
respond_to do |format| format.json do render json: { orders: @orders.as_json(include: :documents),metadata: 'sent' } end end
这确实发送了元数据,因此在我的ClientApp中,我可以编写@ orders.metadata并获取’sent’.但现在我的命令嵌套在’orders’中的数组中,所以我需要使用@ orders.orders,然后它将它视为数组而不是Her系列.
在做了一些阅读后,似乎通过标题发送分页信息是很多其他人这样做的方式(我能够使用this guide在after_filter中设置标题).但是我对如何在我的ClientApp中获取这些响应标头更加迷茫 – 我相信我需要一个法拉第中间件,但我只是没有运气让它工作.
如果有人知道我怎么能完成这件事,我将非常感激.我不能再花一天时间把头撞在墙上,但我觉得我只是解决这个问题的一个重要信息!
这是代码:
class CustomParserMiddleware < Her::Middleware::DefaultParseJSON def parse(env) json = parse_json(env[:body]) pagination = parse_json(env[:response_headers][:pagination_key]) || {} errors = json.delete(:errors) || {} metadata = json.delete(:metadata) || {} { :data => json,:errors => errors,:metadata => { :pagination => pagination,:additional_metadata => metadata },end def on_complete(env) env[:body] = case env[:status] when 204 parse('{}') else parse(env) end end end
然后,您可以按如下方式访问分页:
@H_429_6@model = Model.all model.metadata[:pagination]以上是大佬教程为你收集整理的ruby – 使用Her,Faraday在API中进行Rails分页全部内容,希望文章能够帮你解决ruby – 使用Her,Faraday在API中进行Rails分页所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。