我在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/

10-13 02:17