2017-02-12 43 views
1

我已經安裝了雷的寶石,並有在我的控制器下面的代碼:使用Kaminari的Rails 5 API - 如何向客戶端提供頁數數據?

# 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

元數據不會被添加到響應中。僅供參考使用JSONAPI在EmberJS中使用的代碼,但現在我使用的是Angular2,所以不知道如何將這個'meta'數據添加到響應中。

回答

2

你應該寫這樣

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

在您的例子,你剛纔添加到@customers JSON響應,而元部分去別的地方(不響應)。因此,要在你的json響應中使用meta部分,請確保它位於正確的位置

+0

感謝你這麼快速的回答,完美的工作......很簡單,當你知道如何,大聲笑:) – rmcsharry

+3

'pageCount'變量和計算是不必要的,用@ customers.total_pages替換。 '.total_pages'方法[由kaminari提供](https://github.com/kaminari/kaminari#query-basics) – Thomas

相關問題