Ruby on rails Rails如何为子-父关系创建递归嵌套形式

Ruby on rails Rails如何为子-父关系创建递归嵌套形式,ruby-on-rails,forms,Ruby On Rails,Forms,模型是 class MenuItem < ActiveRecord::Base belongs_to :menu_item has_many :menu_items accepts_nested_attributes_for :menu_items end 单击“添加/删除”将根据子项再添加/删除一个,我如何才能实现这一点?我认为您应该使用递归局部视图 项目: class Item < ActiveRecord::Base belongs_to :parent, :

模型是

class MenuItem < ActiveRecord::Base
  belongs_to :menu_item
  has_many :menu_items
  accepts_nested_attributes_for :menu_items
end

单击“添加/删除”将根据子项再添加/删除一个,我如何才能实现这一点?

我认为您应该使用递归局部视图

项目:

class Item < ActiveRecord::Base
  belongs_to :parent, :class_name => 'Item'
  has_many :children, :class_name => 'Item', :foreign_key => 'parent_id'
end

应该能够很好地处理您的用例。您需要做一些实验,因为深度嵌套是非常重要的

那么,你是怎么想的:

class MenuItem < ActiveRecord::Base
  belongs_to :parent, class_name: "MenuItem", foreign_key: "parent_id"
  has_many :childs, class_name: "MenuItem"
...
class MenuItem
<% items.each do |item| %>
  <div class="item" data-id="<%= item.id %>">
    <div class="content">
      <%= item.name %> <%= link_to 'Delete', item, :confirm => "Are you sure?", method: 'delete' %>
      <%= render partial: 'shared/items', locals: { items: item.children } if item.children %>
    </div>
  </div>
<% end %>
first Delete
    first a Delete
    first b Delete 
second Delete
    second a Delete
    second b Delete
    second c Delete
class MenuItem < ActiveRecord::Base
  belongs_to :parent, class_name: "MenuItem", foreign_key: "parent_id"
  has_many :childs, class_name: "MenuItem"
...