fields_for has_many未在表单上显示为数组

时间:2013-10-25 15:46:50

标签: ruby-on-rails ruby-on-rails-4 has-many fields-for

通常当我在简单的fields_for关联上使用has_many时,表单上的输入名称看起来像foo[bars_attributes][0][name],但在我的情况下,它不会显示为数组在表单上 - 相反,我得到像foo[bars][name]这样的东西,当我尝试提交时会爆炸,因为它试图分配给数组的名称属性 - 我无法弄清楚与其他情况有什么不同。这是代码,显然已经简化并重命名为此场地。

我的模特:

  class Foo
    has_many :bars
  end

控制器:

  class FooController < ApplicationController
    def new
      @foo = Foo.new
      @foo.bars.build
      @foo
    end
  end

观点:

<div>
  <%= form_for @foo do |f| %>
    <%= f.fields_for :bars do |bar_fields| %>
      <%= bar_fields.text_field :name %>
    <% end %>
    <div class="single_column">
      <%= f.submit "Submit" %>
    </div>
  <% end %>
</div>

结果标记:

<input name="foo[bars][name]" id="foo_bars_name" />

1 个答案:

答案 0 :(得分:7)

或许Foo可能值得accepts_nested_attributes_for :bars吗?