Ruby on rails 在ruby on rails上一次创建多个记录

Ruby on rails 在ruby on rails上一次创建多个记录,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,这似乎相当简单,但事实证明并非如此 我有两种模式:作者和书籍。作者有很多书,书属于作者。我希望能够以单一的形式添加许多书,每个书都有不同的作者和信息 class BooksController < ApplicationController def new @books = [] 5.times do @books << Book.new end end class BooksController

这似乎相当简单,但事实证明并非如此

我有两种模式:作者和书籍。作者有很多书,书属于作者。我希望能够以单一的形式添加许多书,每个书都有不同的作者和信息

class BooksController < ApplicationController

def new
 @books = []
  5.times do
    @books << Book.new
  end
end
class BooksController@books
表单标签
不知道您的模型对象。因此它不会将您的参数包装在适当的键下。您应该改用
form_for
来避免构建参数的麻烦

为了创建关联对象,您可以使用
接受
的嵌套属性


为了创建多个对象,您需要。但我建议你只保存一张唱片。你的代码会更干净,你可以利用Rails表单帮助程序,比如
表单和
字段,而不是手工构建HTML代码。

你需要
字段作为
帮助程序。用
表单来构建
的正确方法是什么?@books局部变量是一个数组,所以我不确定它是如何使用该方法的。如果你想坚持使用@books并在一个表单中创建多个记录,你可能会被表单标记和手动构造HTML所困扰,就像链接解决方案一样。但我认为最好以一种形式创建一个记录。代码更干净,用户体验可能更好。如果你想让用户在不被重定向的情况下继续创建记录,你可以一直使用ajax。是的,目标是用一个表单创建多个记录,以加快创建速度。该应用程序已经有一个用于添加表单的表单,但希望探索添加一个允许批量样式导入的表单。
<%= 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") %>