2016-10-18 7 views
0

Ich möchte meine @ users-Variable auf eine bestimmte Liste von Benutzern festlegen (deren IDs in einer Datei angegeben sind).Rails Controller: Wie gibt man eine Liste bestimmter Objekte zurück?

Dies ist mein Controller:

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 */ 

Die Kommentarzeile einen Fehler wirft, ich glaube, weil @users kein Array ist, sondern etwas anderes, und ich bin nicht sicher, was ich soll machen.

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

total_entries aus dem will_paginate gem

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

Antwort

1

definiert, da ist, wenn Sie User.find(ids) tun wird es ein Array zurück, tun nur User.where(id: ids).paginate(page: params[:page])

+0

Fast gearbeitet! Aber es hieß: "ActionView :: Template :: Error (undefinierte Methode' total_entries 'für # ): " – ineedahero

+1

siehe aktualisierte Version –

+0

Wow, du bist wirklich schlau! – ineedahero

Verwandte Themen