我在我的 Rails 应用程序中使用 mailboxer
gem,我想对我的收件箱消息进行排序,这样当用户收到新消息时,我想收到通知或跟踪消息已读消息和未读消息并命令消息在页面顶部显示未读/新消息。
这是我的对话 Controller
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/