[Rails] Nested form
Nested form 可以將有關聯的 model attribute 放在同一個 form 裡面一起建立或更新。
例如一個商品有很多種規格,我希望在新增商品的時候就可以同時新增完規格( product has_many specs )
Model如下:
class Product < ActiveRecord::Base
has_many :specs, :dependent => :destroy
accepts_nested_attributes_for :specs
class Spec < ActiveRecord::Base
belongs_to :product
end
接下來是前端 form 的部分,在此用 simple_form 作為例子
如果是用 simpleform 就是使用 simplefield_for 的這個 helper 即可
# view/admin/products/_form.html.erb
<%= simple_form_for [:admin, @product] do |f| %>
<%= f.input :name, required: true %>
<%= f.input :description, required: true %>
<%= f.input :price %>
# nested form 從這裡開始
<%= f.simple_fields_for :specs do |spec| %>
<%= spec.input :name %>
<%= spec.input :detail %>
<% end %>
# nested form 結束
<%= f.button :submit, "Submit", disable_with: "Submiting..." %>
<% end %>
這樣就完成了最簡單的 nested form 了。