【问题标题】:fields_for has_many not showing as array on formfields_for has_many 未在表单上显示为数组
【发布时间】:2013-10-25 15:46:50
【问题描述】:

通常,当我在简单的 has_many 关联上使用 fields_for 时,表单上的输入名称类似于 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" />

【问题讨论】:

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


    【解决方案1】:

    也许Foo 值得加入accepts_nested_attributes_for :bars

    【讨论】:

    • 我一直认为accepts_nested_attributes_for 是您在提交时需要的东西。我没想到它会改变名称在呈现的表单元素上的显示方式,但它确实发生了。感谢您在发布此内容之前将我显然应该拥有的骨头扔给我!
    • 不用担心,很高兴我能帮上忙
    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 2012-07-08
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多