【发布时间】:2015-07-09 17:05:08
【问题描述】:
我有一个Restaurant 模型,它有很多DishCategory,也有很多Dish 到DishCategory。例如,Dinner 类别将是与其相关联的许多菜肴。为了帮助构建表单,我使用了cocoon gem。
我熟悉为传统的嵌套表单设置视图代码,但现在我要深入一层,我不知道如何编写以及将输入的菜肴放在哪里。我是否在部分内部为dishes 设置另一个simple_fields_for 块?按照文档,这是目前的设置方式:
模型
class Restaurant < ActiveRecord::Base
has_many :dish_categories, dependent: :destroy
has_many :dishes, through: :dish_categories, dependent: :destroy
accepts_nested_attributes_for :dish_categories, :reject_if => :all_blank, :allow_destroy => true
end
class DishCategory < ActiveRecord::Base
belongs_to :restaurant
has_many :dishes, dependent: :destroy
accepts_nested_attributes_for :dishes, :reject_if => :all_blank, :allow_destroy => true
end
class Dish < ActiveRecord::Base
belongs_to :dish_category
end
餐厅表格
<%= simple_form_for(@restaurant) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :name %>
</div>
<div class="form-inputs dish-category-inputs">
<%= f.simple_fields_for :dish_categories do |f| %>
<%= render 'dish_category_fields', f: f %>
<% end %>
</div>
<div class='add-dish-category'>
<%= link_to_add_association 'Add a Dish Category', f, :dish_categories %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
菜品类别字段
<div class="dish-category-form nested-fields">
<%= f.input :name %>
<%= link_to_remove_association "Remove Category", f %>
</div>
【问题讨论】:
标签: ruby-on-rails forms nested-forms cocoon-gem