Я пытаюсь получить повсеместное происхождение драгоценных камней в течение последних двух дней. Я проверил один/два учебника, но они старые и имеют много ошибок или делают не работает. Мне удалось заполучить немного родословной, но мне нужна помощь в правильном определении родителей, детей, корней и внуков. Я прочитал документацию, но я не могу получить ее должным образом . Поток моего проекта.Использование родословной для создания отношений родитель-ребенок-внук в рубине
---- Parent1
------ Child1
--------- Grandchild1
------ Child2
- --- Parent2
------ Child1
Теперь я получил Ахольд как создать родительский ID.This является м y код.
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>
Heres шоу файл
<%= 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>
Теперь это был простой, но как я выбрать root и дочерний узел узла и как отображать их соответственно. Я попробовал консоль rails, чтобы получить представление, но есть и другая проблема. Например, Если родительский элемент содержит несколько дочерних элементов, он отображает результат, но если дочерний элемент содержит дочерние элементы, он ничего не показывает, хотя когда родительский ребенок отображается всеми его внуками также получите отображаемые. Я немного смущен этим. Любая помощь оценивается
Вы можете показать, где объявляется переменная '@ messages'? – lcguida
Забыл добавить его.здесь это – soldiershin
Я не мог понять, чего вы пытаетесь достичь здесь. Вы получаете все сообщения и перечислите их. Где в вашем коде вы видите это родительское/дочернее отношение? – lcguida