Rails Controller:如何返回特定对象列表?

时间:2016-10-18 13:25:07

标签: ruby-on-rails

我想将@users变量设置为特定的用户列表(其id在文件中指定)。

这是我的控制者:

class UsersController < ApplicationController
unloadable
require 'will_paginate/array'

ENTRIES_PER_PAGE = 15

def index
    if some_condition
      @users = User.all
    ...
    ...
    ...

    /* inside else block */
    ids = []
    File.open("./user_ids.txt", "r") do |f|
      f.each_line do |line|
        ids.push[line]
      end
    end

    /* ??? */
#   @users = User.find(ids)
    /* When above line is uncommented, application throws error */

注释行引发错误,我认为因为@users不是数组,而是其他东西,我不确定我应该做什么。

ActionView::Template::Error (undefined method `total_entries' for #<Array:0x000000044aa688>)

total_entries是从will_paginate gem

定义的
<p> Total entries: <%= @users.total_entries %> </p>

1 个答案:

答案 0 :(得分:1)

那是因为当你执行User.find(ids)时它将返回一个数组,只需执行User.where(id: ids).paginate(page: params[:page])