Я пытался понять это весь день, и это сводит меня с ума.Rails pagination в API с использованием Her, Faraday
У меня есть два рельсовых приложения, ServerApp и ClientApp. ClientApp получает данные от ServerApp через API, используя ее драгоценный камень. Все было здорово, пока мне не понадобилась информация для разбивки на страницы.
Это метод я использую, чтобы получить заказы (это использует 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, который Ее использует в качестве коллекции заказы. Это прекрасно работает.
# 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 и получить «послал». Но теперь мои заказы вложены в массив внутри «заказов», поэтому мне нужно использовать @ orders.orders, а затем он рассматривает его как массив, а не ее коллекцию.
После некоторого чтения казалось, что передача информации разбивки на страницы с помощью заголовков была такой же, как и многие другие люди (я смог получить заголовки, настроенные в файле after_filter, используя this guide). Но я еще больше теряю информацию о том, как получить эти заголовки ответов в своем ClientApp - я считаю, что мне нужно промежуточное ПО Faraday, но мне просто нечего делать, чтобы это работало.
Если кто знает, как я могу это сделать, я был бы очень благодарен. Я не могу взять еще один день, ударяя головой о стену, но я чувствую, что я всего лишь один важный фрагмент информации из этого!
ЭВТ. это также может быть проблемой для ее проекта. Вы можете открыть там проблему и посмотреть, есть ли у вас отзывы от разработчиков проекта. – poseid
Я рассмотрел возможность публикации ее на странице ее github, но я подумал, что это было более непонимание с моей стороны, а не проблема с их стороны. – d3vkit