2017-02-12 7 views
1

Я установил Kaminari камень и имеют следующий код в мой контроллер:Rails 5 API с использованием Kaminari - как предоставить данные счетчика страниц на стороне клиента?

# 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 

Это попытка добавить раздел «мета», чтобы мой ответ с данными, мне нужно в клиенте для создания элементов управления пейджинговой.

Проблема заключается в том, что если я делаю запрос (например, с помощью почтальона):

локальный: 3000/клиенты страница = 1

мета данные не добавляется к ответу.

FYI Я основал этот код, который я использовал в EmberJS, используя JSONAPI, но теперь я использую Angular2, поэтому не знаю, как получить эти мета-данные, добавленные в ответ.

ответ

2

Вы должны написать как

render json: { customers: @customers, meta: { total: pageCount, records: Customer.count } } 

В вашем примере вы просто добавив @customers в ответ JSON, в то время как мета-часть идет где-то еще (не ответ). Поэтому, чтобы иметь свой мета-раздел в вашем ответе json, убедитесь, что он находится в правильном месте.

+0

Спасибо за такой быстрый ответ, прекрасно работает ... так просто, когда вы знаете, как, lol :) – rmcsharry

+3

'pageCount' переменная и вычисление не требуется, замените на @ customers.total_pages. Метод '.total_pages' [предоставляется kaminari] (https://github.com/kaminari/kaminari#query-basics) – Thomas

Смежные вопросы