2014-08-03 3 views
-5

Я получаю эту ошибку:Error неопределенного метода `страница»

undefined method `page' for #<User::ActiveRecord_Relation:0x007ff3ce5a1da0> 

Как я могу это исправить? Это мой код:

class UsersController < ApplicationController 

    def index 
    @users = User.all 
    @users = User.where(:username).page params[:page] 
    end 

end 
+0

'page' не встроено в рельсах. Вы получите его, если используете колонию, похожую на 'will_paginate' https://github.com/mislav/will_paginate или' kaminari' https://github.com/amatsuda/kaminari Используете ли вы один из этих драгоценных камней или делаете вы просто попробуете «страницу», надеясь, что это сработает? – SteveTurczyn

+0

Я использую Kaminari – rscottbradshaw

+0

Я только что заметил 'where (: username)' ... вы хотели сказать 'where (: username => current_user.name)' или что-то в этом роде? Вы не получаете коллекцию, вы получаете отношение. – SteveTurczyn

ответ

1

Убедитесь, что у вас есть

gem 'kaminari'
в вашем Gemfile

А затем заменить указательный код

class UsersController < ApplicationController 
    def index 
    # assuming you want to check username not nil 
    @users = User.where.not(username: nil).page(params[:page]) 
    end 
end 

Вам нужно будет только где запрос, если вы хотите ограничить пользователи по имени пользователя SteveTurczyn заявили в комментариях. Кроме того, первое назначение @users переопределяется на следующем шаге. Это может быть изменено на

@users = User.all 
@users = @users.page(params[:page]) 

если вы хотите сохранить синтаксис две строки

+0

Спасибо за помощь ob264 и Steve. Я, наконец, получил его на работу! – rscottbradshaw

+0

Добро пожаловать. Если это решит вашу проблему, не возражаете ли вы принять ответ? – ob264

Смежные вопросы