我正在运行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)