将邮箱gem版本0.12.2与Rails版本4.1.4一起使用。
当我向自己发送消息时,“对话”视图会显示相同的消息两次(一次为mailbox_type
= sentbox
,一次为mailbox_type
= inbox
) 。我发送给其他用户的邮件没有这个问题。
我只是想在我的对话视图中显示一次消息(理想情况下,在查看我的收件箱时显示inbox
版本,在查看我发送的消息时显示sentbox
版本。)我有办法吗?那样做?
此处我的自定义show
中的ConversationsController
操作(current_user
是指示当前已登录用户的设计方法)
def show
@mailbox = current_user.mailbox
@conversation = @mailbox.conversations.find(params[:id])
@receipts = @conversation.receipts_for(current_user)
end
我还在show
行动中尝试了以下组合,但结果相同。
inbox
方法代替conversations
方法:@conversation = @mailbox.inbox.find(params[:id])
receipts_for
实例变量上使用@mailbox
方法:@receipts = @mailbox.receipts_for(@conversation)
这是我对应的show.html.erb
视图
<ul>
<%= content_tag_for(:li, @receipts) do |receipt| %>
<% message = receipt.message %>
<strong>From:</strong> <%= message.sender.email %>
<br/>
<strong>Message:</strong><%= simple_format h message.body %>
<strong>Sent:</strong> <%= @conversation.updated_at.strftime("%a, %m/%e/%Y %I:%M %p") %>
<div>
<br/>DEBUG INFO:<br/>
Message Id <%= message.id %><br/>
Receipt Id <%= receipt.id %><br/>
Receipt Mailbox type <%= receipt.mailbox_type %><br/>
</div>
<hr/>
<% end %>
</ul>
无论如何只是得到我的&#34;收件箱&#34;查看与我自己的对话,不要显示重复的消息?
答案 0 :(得分:0)
感谢在gem's github page上回答这个问题的歌曲:
def show
@mailbox = current_user.mailbox
@conversation = Mailboxer::Conversation.find(params[:id])
@receipts = @conversation.receipts_for(current_user).inbox
end
执行此操作的行是@conversation.receipts_for(current_user).inbox
。在inbox
&#34; gets the receipts for a logged in user from that conversation that are labeled with the mailbox_type of inbox
.&#34;
receipts
不幸的是,如果您在{{@receipts
上使用show
方法,则对话与其他用户的对话可能不适合对话inbox
视图的receipts
变量的内容1}} - 对话的current_user
视图中与其他用户无法看到show
发送的消息。这是邮箱gem的限制(Mailboxer的设计不能仅向自己发送邮件)。
最后,如果您需要支持仅向自己发送消息,则需要在控制器/视图中使用额外的逻辑。