嵌套表单动态添加 - 递归渲染rails部分

时间:2013-11-05 10:17:00

标签: ruby-on-rails nested-forms partial

我正在关注Nested Model Form的Railscast示例。由于这种辅助方法,动态添加是可能的:

def link_to_add_fields(name, f, association)
    new_object = f.object.send(association).klass.new
    id = new_object.object_id
    fields = f.fields_for(association, new_object, child_index: id) do |builder|
      render(association.to_s.singularize + "_fields", f: builder)
    end
    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
  end 

我在Room关联上调用此方法,从而使 _room_fields 部分呈现。 这一切都很好。问题是我想在另一部分内部渲染另一个fields_for标记。

_room_fields.html.haml:

= f.input :dorm
= f.fields_for :beds do |builder|
  =render 'bed_fields', f: builder

问题是我的bed_fields部分不呈现。我已尝试使用相同的代码,而不是动态创建它,它会使一切正常。如何以递归方式呈现第二部分?

任何想法将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

好的,找出问题所在。第二个嵌套的部分没有呈现,因为我没有实例化一个新的Bed对象。