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"
...