[英]Create multiple records at once ruby on rails
這似乎很簡單,但事實並非如此。
我有兩個模型:作者和書籍。 作者擁有許多書籍,書籍屬於作者。 我希望能夠以一種形式添加多本書,每本書的作者和信息各不相同。
class BooksController < ApplicationController
def new
@books = []
5.times do
@books << Book.new
end
end
我不確定這是否是形成控制器的正確方法。 視圖如下:
<%= form_tag(books_path(@books)) %>
<% @books.each do |book| %>
<%= text_field_tag(:title) %>
<%= text_field_tag(:author) %>
<%= text_field_tag(:pages) %>
<% end %>
<%= submit_tag("Submit") %>
據我所知,這是因為我無法使@books最終進入我的參數,因此我還沒有嘗試過create方法。 我得到的只是最后一條記錄的:title,:author和:pages,它們甚至不在書中。
form_tag
不知道您的模型對象。 因此,它不會在適當的鍵下包裝您的參數。 您應該改用form_for
來省去構造參數的麻煩。
為了創建關聯的對象,您可以使用accepts_nested_attributes_for
。
為了創建多個對象,您需要將它們的參數以數組的形式發送到控制器 。 但是我建議您只保存一條記錄。 您的代碼將更加fields_for
,並且可以利用Rails的表單幫助器(例如form_for
和fields_for
來代替手工構建HTML代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.