Как я могу иметь «непрочитанное сообщение» рядом с каждым сообщением, отображаемым в разделе «Входящие» почтового ящика? - PullRequest
0 голосов
/ 25 января 2019

Вопрос: Как сделать так, чтобы «Сообщение не читалось» отображалось рядом с каждым сообщением в моем почтовом ящике?

Я создал внутреннюю почтовую систему для своего приложения, используя гем почтового ящика. Моя проблема заключается в том, что когда я захожу в раздел «Входящие» и просматриваю все сообщения, отправленные на мою учетную запись, я хочу видеть, какие сообщения я не прочитал.

Мой код:

<div class="media-body">
    <h4 class="media-heading">
    <b> Sender:  </b> <%=  conversation.originator.username %> <br>
    </h4>
<small><b>Subject: </b><%= conversation.subject %></small><br>
<small><b>Date: </b><%=  conversation.messages.last.created_at.strftime("%A, %b %d, %Y at %I:%M%p") %></small><br>
<b> Recent message: </b> <%= truncate conversation.messages.last.body, length: 145 %>
    <%= link_to "View", conversation_path(conversation)  %>
</div>

Этот код работает с сообщениями в папке входящих сообщений, какие из них не прочитаны, и подсчитывает их, чтобы я знал, какие сообщения не читаются.

module MailboxHelper
    def unread_messages_count
    # how to get the number of unread messages for the current user
    # using mailboxer
        mailbox.inbox(:unread => true).count(:id, :distinct => true)
    end
end

Единственное, что я могу определить в схеме, сгенерированной гемом почтового ящика, - это логическое значение is_read:

create_table "mailboxer_receipts", force: :cascade do |t|
    t.integer  "receiver_id"
    t.string   "receiver_type"
    t.integer  "notification_id",                            null: false
    t.boolean  "is_read",                    default: false
    t.boolean  "trashed",                    default: false
    t.boolean  "deleted",                    default: false
    t.string   "mailbox_type",    limit: 25
    t.datetime "created_at",                                 null: false
    t.datetime "updated_at",                                 null: false
    t.boolean  "is_delivered",               default: false
    t.string   "delivery_method"
    t.string   "message_id"
  end

Полагаю, исходя из этой информации, я не уверен, как связать все вместе, поэтому, когда я нахожусь в представлении входящих сообщений и вижу все свои сообщения, я хочу, чтобы "Не читалось" или что-то появлялось для каждого сообщения в Входящие Как я мог это сделать?

Кроме того, какая другая информация вам требуется? Gem почтового ящика уже сгенерировал довольно много кода, но я не был уверен, что относится к этому вопросу.

1 Ответ

0 голосов
/ 25 января 2019

фактически у почтового ящика есть метод в записи разговора is_unread? (Current_user) Вы можете использовать его для своей задачи выше

ниже, например, ваш контроллер разговоров

@mailbox ||= current_user.mailbox
@conversations = @mailbox.inbox

в ваших файлах просмотра (index_inbox.html.erb)

<%=  @conversations.each do |conversation| %>
  # this to show subject that link to conversation
  <%= link_to conversation.subject, conversation_path(conversation) %>
  <% if conversation.is_unread?(current_user) %>
    (unread message)
  <% end %>
<% end %>
...