如何显示博客的某些分支?

时间:2015-10-09 07:23:35

标签: ruby-on-rails ruby-on-rails-4 ancestry

请帮助解决问题。我使用宝石'祖先'。我做了简单的博客。 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

index.html.erb:

<%= nested_messages @messages.arrange(:order => :created_at) %>
<br>
<%= render 'form' %>

模式:

create_table "messages", force: :cascade do |t|
  t.text     "content"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.string   "ancestry"
end
结果i中的

输出到index.html.erb带有相关消息的消息树。但我需要输出只有相关消息的特定消息。例如对于id = 3的消息

PS: 对于制作博客我使用本教程: http://railscasts.com/episodes/262-trees-with-ancestry

1 个答案:

答案 0 :(得分:1)

好的,I've written about this before;有些事情你需要修复Railscast建议:

  
      
  1. 把它放在一个部分,而不是帮助(它提供更大的自治权)
  2.   
  3. 您需要确保您的结构具有您需要的多功能性
  4.   

-

以下是我要做的事情:

#app/controllers/messages_controller.rb
class MessagesController < ApplicationController
   def index
      @messages = Message.all #-> could filter this to only retrieve id=3
      #@messages = Message.find "3" #-> like this
   end
end

#app/views/messages/index.html.erb
<% render @messages.arrange(order: :created_at) %>

#app/views/messages/_message.html.erb
# ... single message output code ... #
<%= render message.children if message.has_children? && message.id == "3" %>

然后,您可以将条件功能推断为帮助程序。如果您更具体地描述您的功能,我将能够帮助您定义它。