def link_to_add_nested_fields(name, f, association, klasss, type)
new_object = f.object.send(association).klass.new
id = new_object.object_id
field = f.fields_for(association, new_object, child_index: id) do |builder|
render(association.to_s.singularize + "_#{type}", f: builder)
end
link_to(name, '#', class: klasss, data: {id: id, type: field.gsub("\n", "")})
end
我正在尝试自定义一个我从这里http://railscasts.com/episodes/196-nested-model-form-revised得到的帮助代码,但我遇到了类型参数的问题。正在使用这个助手的一个例子;
<%= link_to_add_nested_fields "Add custom field", f, :fields, "add_fields","fields" %>
问题肯定是类型参数,有谁知道我怎么能解决这个问题? 感谢
答案 0 :(得分:1)
我见过这个演员,这似乎不是处理&#34;添加更多&#34;的最佳解决方案。嵌套属性的链接。
基本上,accepts_nested_attributes的工作方式是关键。
在controller
:
parent.child.build
只需为初始视图构建一次。这将使该字段最初在页面重新加载时显示。
在.erb template
,
<% parent.children.each do |child| %>
<div class="child_fields">
<%= render "the child fields partial" %>
</div>
<% end %>
<%= link_to "Add More", "#", class: "add_more_link" %>
<% javascript_include_tag "js_file_to_handle_add_more_link" %>
在"js_file_to_handle_add_more_link.js"
首先,使用以下方法计算现有的子字段:
$('.child_fields').size();
现在,创建id为:
的html字段parent_children_attributes_" + count + "_attribute_name"
并命名为:
"parent[children_attributes]["+ count +"][attribute_name]"
每组子字段都应具有唯一值计数。此外,这里的父母是单数,而儿童是复数。
而且就是这样。
现在提交表单时,rails将自动保存子对象,因为每个对象都由accepts_nested_atributes格式唯一标识