Я следил за рельсами cast 262 для родословной, поэтому я могу использовать вложенные сообщения. Я имею вопрос, когда я просматриваю сообщение, он не перечисляет другие сообщения из дерева. Идентификатор сообщения 26 ancestry
- 7 (7 - это сообщение, на которое было получено ответ). Идентификатор сообщения 27 ancestry
- 7, 26. Когда я просматриваю исходный идентификатор сообщения 7, он дублирует контент три раза. Если я просматриваю идентификатор сообщения 26, он дублирует его содержимое два раза. Если я просматриваю идентификатор сообщения 27, он не показывает дублирование.nested_messages, не показывающий предыдущие сообщения
Как это работает, когда я просматриваю любую из этих идентификаторов сообщений, он должен отображать содержимое с ancestry
.
Я не уверен, что я делаю неправильно.
show.html.rb:
<p>
<strong>From:</strong>
<%= @message.sender %>
</p>
<p>
<strong>To:</strong>
<%= @message.recipient %>
</p><div class="message">
<div class="created_at"><%= @message.created_at.strftime('%B %-d, %Y %l:%M%P') %></div>
<div class="content"><P>
<%= nested_messages @message.subtree.arrange(:order => :created_at) %>
</div>
<div class="actions">
<% if @message.recipient == @user %>
<%= link_to "Reply", new_user_message_path(@user, :parent_id => @message) %><% end %>
|
<%= link_to "Delete", [current_user, @message], :confirm => 'Are you sure you want to delete this message?', :method => :delete %>
</div>
</div>
<%= render "form" %>
<p>
<% if @message.next %>
<%= link_to 'Next', user_message_path(current_user, @message.next) %>
<% end %>
<% if @message.previous %>
<%= link_to 'Previous', user_message_path(current_user, @message.previous) %>
<% end %>
</p>
<p>
<% if @message.recipient == @user %>
<%= link_to "Reply", new_user_message_path(@user, :reply_to => @message.sender.id) %>
|
<% end %>
<%= link_to "Inbox", user_messages_path(current_user, :mailbox=>:inbox)%>
|
<%= link_to "Delete", [current_user, @message], :confirm => 'Are you sure you want to delete this message?', :method => :delete %>
</p>
messages_helper.rb:
module MessagesHelper
def nested_messages(messages)
messages.map do |message, sub_messages|
render(message) + content_tag(:div, nested_messages(sub_messages), :class => "nested_messages")
end.join.html_safe
end
end
_message.html.erb:
<div class="message">
<div class="created_at"><%= message.created_at.strftime("%B %d, %Y") %></div>
<div class="content">
<%=h @message.body %>
</div>
</div>
журнал Inspection:
{#<Message id: 7, sender_id: 3, recipient_id: 1, sender_deleted: 0, recipient_deleted: 0, subject: "mountain", body: "okok", read_at: "2013-12-06 21:54:33", container: "draft", created_at: "2013-12-05 19:39:11", updated_at: "2013-12-06 21:54:33", conversation_id: nil, original_message_id: nil, ancestry: nil>=>{#<Message id: 26, sender_id: 1, recipient_id: 3, sender_deleted: 0, recipient_deleted: 0, subject: "why s it", body: "isjdkjdjkd", read_at: "2013-12-20 16:46:26", container: "draft", created_at: "2013-12-20 16:21:00", updated_at: "2013-12-20 16:46:26", conversation_id: nil, original_message_id: nil, ancestry: "7">=>{#<Message id: 27, sender_id: 3, recipient_id: 1, sender_deleted: 0, recipient_deleted: 0, subject: "not sure", body: "i'm just continuing the conversation dude!", read_at: "2013-12-20 16:48:02", container: "draft", created_at: "2013-12-20 16:46:45", updated_at: "2013-12-20 16:48:02", conversation_id: nil, original_message_id: nil, ancestry: "7/26">=>{}}}}
Можете ли вы поделиться своим кодом 'app/views/messages/_message.html.erb'? Кроме того, если вы добавили '<% = @ message.subtree.arrange (: order =>: created_at) .inspect%>' где-то внутри 'show.html.erb', что он отображает? – cschroed
Я добавил код и что отображается для линии проверки. Он показывает все вложенные сообщения с .inspect. –