使用delete_if查找使用邮箱的对话,然后使用kaminari进行分页

时间:2014-02-27 18:15:41

标签: ruby-on-rails ruby kaminari mailboxer

我正在尝试一些事情来查找并非所有消息都被删除且无法正常工作的对话。

这是一个植入:

def index  
    @conversations = @mailbox.conversations.delete_if do |c|
        receipts = c.receipts_for @master
    return (receipts.where(deleted: true).count == receipts.count)  
    end
    @conversations = @conversations.page(params[:page_1]).per(9)
end

我也使用.find_each而不是delete_if。

这是我在视图中出现的错误

ActionView::Template::Error (undefined method `first_page?' for nil:NilClass):

更新:我删除了退货,现在显示:

NoMethodError(#的未定义方法`page'):

1 个答案:

答案 0 :(得分:0)

index方法一旦到达return

就退出

尝试删除return关键字。

编辑,重新:分页

使用delete_if时,生成的对象将是一个数组。默认情况下,Kaminari不能使用数组。请参阅this link

所以,你需要做这样的事情: @conversations = Kaminari.paginate_array(@conversations).page(params[:page_1]).per(9)

比使用delete_if更好的解决方案是组合一个查询,该查询可以准确地返回您想要的ActiveRecord::Relation对象。

我不确定究竟会是什么样子。可能会提出一个很好的单独问题。