2015-12-02 70 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