我的Rails应用程序中有以下模型:
class Todo < ActiveRecord::Base
has_many :sub_todos, class_name: 'Todo', foreign_key: 'parent_todo_id'
belongs_to :parent_todo, class_name: 'Todo'
end
我正在研究一种做WBS(工作分解结构)应用的方法,到目前为止还有索引视图:
<h1>Todos</h1>
<%= form_for @todo do |f| %>
<%= f.label :content, 'Todo', class: 'control-label' %>
<%= f.text_field :content, class: 'form-control', size: 50 %>
<%= f.submit 'Save' %>
<% end %>
<% @todos.where(parent_todo_id: nil).each do |todo| %>
<p><%= todo.content %></p>
<ul>
<% todo.sub_todos.each do |sub_todo| %>
<li>
<%= sub_todo.content %>
<!--form goes here-->
</li>
<ul>
<% sub_todo.sub_todos.each do |sub_todo| %>
<li><%= sub_todo.content %></li>
<% end %>
</ul>
<% end %>
</ul>
<% end %>
我需要将项目分成较小的项目。为此,我想在每个表格下面放一个表格,这样我就可以创建一个新的“sub_todo”。
我的问题是:我如何为自引用模型创建一个表单?我之前使用过嵌套资源的表单,但我似乎无法弄清楚该怎么做自我指涉模型的案例。
另外,这是循环这种记录的正确的ruby / rails方法吗?
答案 0 :(得分:1)
您将使用嵌套表单。有一个伟大的RailsCast:
http://railscasts.com/episodes/196-nested-model-form-part-1
f.fields_for :sub_todo # in your form_for block
要在列表中添加没有父表单的地方,您可以在这里找到表格,然后在这里#34;做
form_for :todo
hidden_field_for :parent_todo_id, sub_todo_id
...