2015-10-09 2 views
1

, пожалуйста, помогите решить проблему. Я использую gem '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 

в результате вывода я к index.html.erb дерева сообщений с соответствующими сообщениями , но мне нужно выводить только определенное сообщение со связанными сообщениями. например для сообщения с идентификатором = 3

пс: для блога сделал я использовать этот учебник: http://railscasts.com/episodes/262-trees-with-ancestry

ответ

1

Okay, I've written about this before; Есть определенные вещи, которые вы должны исправить с рекомендациями Railscast:

  1. Положите его в частичном, а не помощник (это дает большую автономию)
  2. Вы должны убедиться, что ваша структура является универсальны, как вам нужно

-

Вот как бы я делать то, что вы пытаетесь достичь:

#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" %> 

Затем вы можете экстраполировать условную функциональность в помощник. Если вы более конкретно описываете свою функциональность, я смогу создать помощника для ее определения.

 Смежные вопросы

  • Нет связанных вопросов^_^