simple_fields_for form_builder.object 返回新对象



我正在尝试了解您应该如何使用Rails Form Builder(或在本例中为simple_form)访问对象。

我按照 http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for 中所述传入对象,如下所示:

- @document.sections.each do |section|
  = f.simple_fields_for :sections, section do |section_form|
    = render 'section_fields', :f => section_form

但是,当我在部分内调用 f.object 时,我得到一个包含 nil id 等的"新"Section 对象,从而破坏了我的link_to路径。

即使传入变量的"标准"方式似乎也被打破了,例如:

- @document.sections.each do |section|
  = f.simple_fields_for :sections, section do |section_form|
    = render 'section_fields', :f => section_form, :foo => section

在部分内未定义 foo。

我应该如何使用fields_for has_many关联访问正在为其构建表单的预期对象?

我认为您需要构建关联的对象并像这样更改代码:

- @document.sections.build if @document.sections.empty?
  = f.simple_fields_for :sections, @document.sections do |section_form|
   = render 'section_fields', :f => section_form

事实证明,Cocoon 方法"link_to_add_association"正在生成一个新对象,该对象正在破坏包含 f.object 的link_to,因为该对象显然不存在。

简单地添加"除非f.object.new_record?"会忽略Cocoon生成的新(隐藏)记录。

相关内容

  • 没有找到相关文章

最新更新