Stan Blog

學習過程中的一些記錄

[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 了。

Comments

comments powered by Disqus