私は一日中これを理解しようとしてきました、そしてそれは私を夢中にさせています.
ServerApp と ClientApp の 2 つの Rails アプリがあります。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
Her が注文のコレクションとして使用する json のハッシュの配列を返します。それはうまくいきます。
# 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": [
{ ... }
]
},
...
]
しかし、ページネーション情報が必要でした。json でメタデータとして送信する必要があるように見えました。そこで、私はこれに対する私の反応を次のように変更します。
respond_to do |format|
format.json do
render json: { orders: @orders.as_json(include: :documents), metadata: 'sent' }
end
end
これは実際にメタデータを送信するので、ClientApp で @orders.metadata を記述して「送信」できます。しかし、私の注文は「orders」内の配列にネストされているため、@orders.orders を使用する必要があり、Her コレクションではなく配列のように扱われます。
いくつか読んだ後、ヘッダーを介してページネーション情報を送信することは、他の多くの人がこれを行った方法であるように思われました(このガイドを使用して、 after_filter にヘッダーを設定することができました)。しかし、ClientApp でこれらの応答ヘッダーを取得する方法についてさらに迷っています。ファラデー ミドルウェアが必要だと思いますが、これを機能させることができません。
どうすればこれを実現できるかを誰かが知っていれば、とても感謝しています。これで頭を壁にぶつけてもう一日はかかりませんが、これを解決するための重要な情報が 1 つだけあるように感じます!