天天看點

rails中weill_paginate的paginate方法中不能使用額外參數的解決辦法

    我們知道高版本中的rails中的分頁功能已經放在will_paginate這個gem中,我們在控制器方法中往往需要調用其paginate方法來實作分頁資料集控制,舉個例子:正常的情況我們想要每頁顯示10條記錄可以這麼寫:

item.paginate(page:params[:page],per_page:10)

但是我們又想要降序排列記錄呢?書上給出的例子如下:

item.paginate(page:params[:page],per_page:10,order:'created_at desc')

可惜該方法在新的rails中已不能使用!通過檢視will_paginate的源代碼可以看到,原因是如果paginate的調用包含其他參數的話,會調用active_record::relation中的執行個體方法apply_finder_options:

可是該方法在新rails中不存在了。解決辦法是在控制器調用paginate前排序即可:

@orders = order.order('created_at desc').paginate(page:params[:page],per_page:10)