Ruby on Rails - 多个新对象的表单

时间:2014-03-26 14:26:50

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个后端(名称空间管理员),并希望创建4个新的数据库条目,其中1个表单提交(4个新国家/地区)。到目前为止我得到了什么:

在我的countries_controller.rb

class Admin::CountriesController < Admin::AdminController
    def new
      @countries = Array.new(4) { Country.new }
    end

end

在我的new.html.erb中:

<%= form_for [:admin, @countries] do |f| %>   
  <% @countries.each do |country| %>
  <div class="row">
    <div class="col-md-6"> 
      <div class="form-group col-md-6">
        <%=f.text_field :country, :name, :class => "form-control", :placeholder => "Country 1" %><br>
        <%=f.text_field :country, :iso, :class => "form-control", :placeholder => "us" %>
      </div></div></div>
  <% end %>
<% end %>

但这不起作用,我收到undefined method model_name for Array:Class错误。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

form_for用于单个ActiveRecord对象,但您将其与对象Array一起使用:

<%= form_for [:admin, @countries] do |f| %>   

为每个对象创建一个表单(每个表单都有一个保存按钮):

<% @countries.each do |country| %>
  <%= form_for [:admin, country] do |f| %>   
    ...
  <% end %>
<% end %>

或者只使用一种表单查看此问题的解决方案:Multiple objects in a Rails form