Последние два дня я пытался освоить жемчужину предков. Я проверил один или два учебника, но они старые и содержат много ошибок или не работают. Я смог получить немного информации о предках. но мне нужна помощь в том, как правильно определить родителей, детей, корневых и внуков. Я прочитал документацию, но не могу ее правильно понять. Поток моего проекта.
----Родитель1
------Ребенок1
---------Внук1
------Ребенок2
----Родитель2
------Ребенок1
Теперь я понял, как создать родительский идентификатор. Это мой код.
def index
@messages = Message.all
end
def show
@page = Message.where(:ancestry => params[:id])
end
def new
@message_id = Message.find(params[:id])
end
def create
@page = Message.new(message_params)
@page.parent_id = params[:parent_id]
#@page = Message.new(message_params)
if @page.save
flash[:notice] = "The Mesage was created succeffully"
redirect_to(:action => 'index')
else
render('new')
end
end
Это индексный файл, который отображает данные, а также может публиковать сообщения.
<div class="Pages index">
<h2>Messages</h2>
<%= link_to("Add new Page",{:action => 'new'}, :class => 'action new') %>
<table class="listing" summary="Page list">
<tr class="header">
<th> </th>
<th>ID</th>
<th>Content Title</th>
<th>Content</th>
<th>Parent Id</th>
</tr>
<% @messages.each do |page| %>
<tr>
<td><%= page.id %>
<td><%= page.content_title %>
<td class="center"><%= page.content %>
<td class="center"><%= page.parent_id %>
<td class="actions">
<%= link_to("Reply",{:action => 'new',:id => page.id},:class =>'action show') %>
<%= link_to("Show",{:action => 'show',:id => page.id},:class =>'action show') %>
</td>
</tr>
<% end %>
</table>
</div>
<div class="Pages new">
<h2> Create Pages</h2>
<%= form_for(:message, :url => {:action => 'create'}) do |f| %>
<table summary="Page form fields">
<tr>
<th>Content_title</th>
<td><%= f.text_field(:content_title) %></th>
</tr>
<tr>
<th>Content</th>
<td><%= f.text_field(:content) %></th>
</tr>
</table>
<div class="form-buttons">
<%= submit_tag("Submit Form") %>
</div>
<% end %>
</div>
Это файл ответа, который, когда пользователь нажимает кнопку ответа, передает parent_id
<div class="Pages new">
<h2> Create Pages</h2>
<%= form_for(:message, :url => {:action => 'create',:parent_id => @message_id}) do |f| %>
<table summary="Page form fields">
<tr>
<th>ParentID</th>
<td><%= f.text_field(:id) %></th>
</tr>
<tr>
<tr>
<th>Content Title</th>
<td><%= f.text_field(:content_title) %></th>
</tr>
<tr>
<th>Content</th>
<td><%= f.text_field(:content) %></th>
</tr>
</table>
<div class="form-buttons">
<%= submit_tag("Submit Form") %>
</div>
<% end %>
</div>
Вот файл шоу
<%= link_to("Back to List",{:action => 'index'}, :class => 'action new') %>
<div class="Pages show">
<h2> Show Pages</h2>
<table summary="Pages detail view">
<th>Parent ID</th>
</tr>
<tr>
<th>Message Content Title</th>
</tr>
<tr>
<th>Content</th>
</tr>
<% @page.each do |page| %>
<tr>
<td><%= page.id %>
<td><%= page.content_title %>
<td class="center"><%= page.content %>
<td class="center"><%= page.parent_id %>
</td>
</td>
</td>
</td>
</tr>
<%end%>
</table>
Теперь это было просто, но как мне выбрать корень и дочерний узел и как отобразить их соответственно. Я попробовал консоль rails, чтобы получить представление, но есть еще одна проблема. Например, если родитель содержит несколько дочерних элементов, он отображает результат, но если дочерний элемент содержит дочерние элементы, он ничего не показывает, хотя, когда родительский дочерний элемент отображается, все его внуки также получают отображается. Я немного смущен этим. Любая помощь приветствуется
@messages
? - person lcguida   schedule 05.01.2015