x無法存取,你可能沒有權限或未登入。
2a01ae9942939ee2b3954a6727d2bb92

[問題/分享] 一次儲存多個 model

2012-01-19 22:51:51 +0800tonytonyjanRuby on Rails 節點 中發起
最後由 xdite2012-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 條回應
19e786a2a74377ff6e052d87fd8d1fa8
xdite 1樓, 於2012-01-19 23:25:29 +0800回應
2a01ae9942939ee2b3954a6727d2bb92
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

19e786a2a74377ff6e052d87fd8d1fa8
xdite 3樓, 於2012-01-20 18:40:22 +0800回應

我看錯了XD

從我的 iPhone 傳送

需要 登入 後方可回應,如果你還沒有帳號按這裡 註冊