簡體   English   中英

在Rails上一次創建多個記錄

[英]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_forfields_for來代替手工構建HTML代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM