我在rails应用程序中使用了gem,我想对收件箱中的消息进行排序,这样当用户收到新消息时,我想有一个通知或跟踪哪些邮件已被阅读,哪些没有,并命令邮件在页面顶部有未读/新邮件。
这是我的对话控制器
class ConversationsController < ApplicationController
before_action :get_mailbox
before_action :get_conversation, except: [:index]
def index
@unread_messages = @mailbox.inbox(unread: true).count
@conversations = @mailbox.inbox({page: params[:page], per_page: 10})
end
private
def get_conversation
@conversation ||= @mailbox.conversations.find(params[:id])
end
def get_mailbox
@mailbox ||= current_user.mailbox
end
end
我试图通过以下方式订购邮件:
@conversations = @mailbox.inbox({page: params[:page], per_page: 10}).joins(:receipts).select("mailboxer_conversations.*, mailboxer_receipts.*").order('mailboxer_receipts.is_read')
但没有成功。
请提出解决办法。
最佳答案
试试这个,
def index
@unread_messages = @mailbox.inbox(is_read:false).count
@conversations = @mailbox.inbox.page(params[:page]).per(10)
end
默认情况下,收件箱的顺序是在顶部显示最新的邮件,例如,当您键入
@mailbox.inbox.first
时,实际上是在提取最后一封(最新的)邮件。关于ruby-on-rails - 如何订购邮箱收件箱?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31259689/