【问题标题】:Error undefined method `page'错误未定义的方法“页面”
【发布时间】:2014-08-03 20:06:14
【问题描述】:

我收到此错误:

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

【问题讨论】:

  • page 没有内置在 Rails 中。如果您使用像 will_paginate github.com/mislav/will_paginatekaminari github.com/amatsuda/kaminari 这样的分页 gem,您会得到它,您是在使用其中一个 gem,还是只是尝试了一种“页面”方法,希望它能起作用?
  • 我刚刚注意到where(:username) ...您是想说where(:username =&gt; current_user.name) 还是类似的东西?你得到的不是一个集合,而是一个关系。
  • 我在那里尝试了一些不同的东西。我现在有了 Kaminari 的文档:@users = User.count(:username).page params[:page]

标签: ruby-on-rails


【解决方案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

如果你想通过用户名来限制用户,你只需要 where 查询,就像在 cmets 中所说的 SteveTurczyn 一样。此外,在下一步中将覆盖对 @users 的第一个分配。这可以改为

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

如果你想保留两行语法

【讨论】:

  • 感谢 ob264 和史蒂夫的帮助。我终于让它工作了!
  • 不客气。如果这解决了您的问题,您介意接受答案吗?
猜你喜欢
  • 2012-05-28
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 2011-10-18
  • 1970-01-01
相关资源
最近更新 更多