ruby on rails-当集合小于per(x)时出现Kaminari错误



我正在运行Kaminari gem进行分页。

控制器

def dashboard
  @projects = Project.find_by_user_id(current_user)
  if @projects.size > 10
    @projects.page(params[:page]).per(10)
  end
end

面板视图

= paginate @projects, :theme => 'twitter-bootstrap-3', :remote => true

在我的情况下,@projects有时只有1条记录,甚至是零条记录。当它为零时,我在params[:page]为零时得到一个错误。

所以这是

def dashboard
  @projects = Project.page(params[:page]).per(10)
end

这得到错误undefined method 'page' for #<Project:0x007f8cac5f14b0>

  def dashboard
    @projects = Project.find_by_user_id(current_user).page(params[:page]).per(10)
  end

我认为这是因为@projects只是几条记录,少于.eper 中指定的10条

我尝试添加@projects.count或@projects.size,但收到错误undefined method 'size' for #<Project:0x007f8c996865f0>

def dashboard
  @projects = Project.find_by_user_id(current_user)
  if @projects.size > 10
    @projects.page(params[:page]).per(10)
  end
end

我到底做错了什么!?哈哈

我想我可以在第一个例子中解决这个问题,而不是试图解决第二个或第三个选项。如有任何帮助,我们将不胜感激。

问题是Project.find_by_user_id(current_user)返回Array,而不是ActiveRecord::Relation

你应该做一些类似的事情:

current_user.projects.page(params[:page]).per(10)

如果你的关系设置正确。

或者:

Project.where(user_id: current_user.id).page(params[:page]).per(10)