remove_fields&添加字段链接不在rails 3.0.9中的嵌套表单上工作

我正在关注来自rails casts的Ryan bates neted_forms第1集和第2集,我已经在我的一个项目中实现了嵌套表单function之前它没有任何错误,但是在我的新项目中我使用了rails中的相同引用强制转换,但删除和添加字段不起作用。

这是我的模特

has_many :contacts, :dependent => :destroy accepts_nested_attributes_for :contacts, :reject_if => lambda { |a| a[:contact_name].blank? }, :allow_destroy => true 

我正在使用的表单添加字段链接

  
builder %>

联系的部分

 

Contact Name


Mobile Number


Email Address


Application helper我写了这个方法

  # Method for removing fields def link_to_remove_fields(name, f) f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)") end # Method for Adding fields def link_to_add_fields(name, f, association) new_object = f.object.class.reflect_on_association(association).klass.new fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder| render(association.to_s.singularize + "_fields", :f => builder) end link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")") end 

application.js如下

 function remove_fields(link) { $(link).previous("input[type=hidden]").value = "1"; $(link).up(".fields").hide(); } function add_fields(link, association, content) { var new_id = new Date().getTime(); var regexp = new RegExp("new_" + association, "g") $(link).up().insert({ before: content.replace(regexp, new_id) }); } 

使用firebug我发现在执行此代码时生成的html中存在一个问题

 

remove

在上面的代码中,value =“false”可能会产生问题,它应该是value =“1”,因为我之前的代码生成的值=“1”。 谁可以帮我解决上述问题?

把这个js放在application.js文件中

function remove_fields(link){
$(链接).prev( “输入[类型=隐藏]”)VAL( “1”)。
$(链接).closest( “田”)隐藏()。 }

function add_fields(link,association,content){var new_id = new Date()。getTime(); var regexp = new RegExp(“new_”+ association,“g”); $(link).parent()。before(content.replace(regexp,new_id)); }

我在删除时遇到问题,直到我在父模型上添加:allow_destroy => true。