我试图了解如何使用Rails表单生成器(或在本例中为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
然而,当我在partial中调用f.object时,我得到一个包含nil id等的'new'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 undefined。
我应该如何访问使用fields_for has_many关联构建表单的目标对象?
答案 0 :(得分:0)
我认为您需要构建关联对象并像这样更改代码:
- @document.sections.build if @document.sections.empty?
= f.simple_fields_for :sections, @document.sections do |section_form|
= render 'section_fields', :f => section_form
答案 1 :(得分:0)
事实证明,Cocoon方法'link_to_add_association'正在生成一个新对象,该对象打破了包含f.object的link_to,因为此时该对象显然不存在。
只需添加'除非f.object.new_record?'忽略Cocoon生成的新(隐藏)记录。