【问题标题】:Ruby on Rails - Form for multiple new ObjectsRuby on Rails - 多个新对象的表单
【发布时间】:2014-03-26 14:26:50
【问题描述】:

我有一个后端(命名空间管理员)并想创建 4 个新的数据库条目和 1 个表单提交(4 个新国家)。到目前为止我得到了什么:

在我的国家_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 错误。这样做的正确方法是什么?

【问题讨论】:

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


    【解决方案1】:

    form_for 用于单个 ActiveRecord 对象,但您将它与对象数组一起使用:

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

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

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

    或查看此问题以获取仅使用一种形式的解决方案:Multiple objects in a Rails form

    【讨论】:

    • 没有数组大小怎么办?
    猜你喜欢
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多