2015-12-02 60 views
0

我對Ruby on Rails比較新,所以希望有些幫助分頁數組不會顯示

角色在我的應用程序中有用戶。 當顯示一個角色時,我想呈現一個分頁的用戶名列表(並作爲進一步的重構 - 與用戶的鏈接)。 目前我HAML模板如下

...

%ul.assigned-users 
    - if @role.users.present? 
     - names = @role.users.collect {|u| u.name} 
     - links = Kaminari.paginate_array(names).page(params[:page]).per(20) 
     = paginate links 
    - else 
     %p No users have this role assigned 

...

渲染它給我的分頁鏈接,但沒有名稱。

回答

0

Kaminaripaginate_array方法不顯示數組中的值。

最好的辦法是從數據庫中獲取分頁查詢。您的代碼中的Kaminari.paginate_array需要從數據庫中接收整個用戶數組,然後對其進行分頁,這非常低效且耗費內存。

您需要將邏輯添加到控制器。如果您對@role.users查詢進行分頁,則會生成LIMIT,這是您在per方法中分配的值,而OFFSET等於(params[:page] - 1) * per。這隻會從數據庫中獲取所需的記錄數。

在你的控制器app/controllers/roles_controller.rb

class ConversationsController < ApplicationController 
    def show 
    @role = Role.find params[:id] 
    @users = @role.users.page(params[:page]).per(20) 
    end 
end 

在你看來app/views/roles/show.html.haml

%ul.assigned-users 
    - if @users.present? 
    - @users.each do |u| 
     %li=u.name 
    = paginate @users 
    - else 
    %p No users have this role assigned