我在为我的分页经营Kaminari宝石。
控制器
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条记录,甚至0条记录。当它是零时,我会在params上得到一个错误:页面为零。
所以这起作用了
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只是几条记录,比.per中指定的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我到底做错什么了?哈哈
我猜想我可以在第一个实例中修复这个选项,而不是试图修复第二个或第三个选项。任何帮助都将不胜感激。
发布于 2014-05-01 06:50:47
问题是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)https://stackoverflow.com/questions/23403272
复制相似问题