[問題/分享] 一次儲存多個 model
2012-01-19 22:51:51 +0800 由 tonytonyjan
在 Ruby on Rails 節點 中發起
最後由 xdite 於2012-01-20 18:40:23 +0800回應
, 207次閱讀
在送出表單時,有時候需要一次送出多個 model(例如批次上傳或是批次新增標籤等等)
而網路上有很多解法,只是有些我覺得寫得太複雜(例如 create 可以傳陣列進去,偏偏就要用 each ,讓程式碼變得不夠漂亮、精簡)
最近因為專案所需,我也寫了一個,在這裡分享給大家,此外也好奇各位前輩是用什麼方法解決這個問題的呢?
<!-- records/new.html.erb -->
<% @records.each do |record| %>
<!-- 參考:http://guides.rubyonrails.org/form_helpers.html#combining-them -->
<%= fields_for "records[]", record do |f| %>
<%= f.text_field :name %>
<% end %>
<% end %>
# records_controller.rb
def new
@records = []
5.times{@records << Record.new}
end
def create
@records = Record.create params[:records]
error_flag = false
@records.map{|record|
unless record.errors.empty?
error_flag = true
return
end
}
if error_flag
render :new
else
redirect_to records_path
end
end
截至 2012-01-20 18:40:23 +0800,共收到 3 條回應
xdite
1樓, 於2012-01-19 23:25:29 +0800回應
建議你改用 nested_form 的作法,不要重造輪子
http://railscasts.com/episodes/196-nested-model-form-part-1
http://railscasts.com/episodes/197-nested-model-form-part-2
tonytonyjan
2樓, 於2012-01-20 13:30:44 +0800回應
nested_form 的用法多用在有 has_many association 的 model 上,但我的狀況只有一個 model,也是用同一個方法:accepts_nested_attributes_for 嗎?例如批次新增多個 User,但 User belongs to nothing
xdite
3樓, 於2012-01-20 18:40:22 +0800回應
我看錯了XD
從我的 iPhone 傳送