如果使用jQuery添加字段,则Rails嵌套表单属性不会保存

我有一个嵌套forms的rails表单。 我使用了janery教程的Ryan Bates嵌套表单,并且我在动态添加新字段时工作得很好。

但是当我提交表单时,它不会保存任何相关属性。 但是,如果表单加载时部分构建,则创建属性就好了。 我无法弄清楚在没有传达表单对象需要保存的javascript中没有传递的内容。

任何帮助都会很棒。

class Itinerary < ActiveRecord::Base accepts_nested_attributes_for :trips end 

行程/ new.html

  {:class => "new_trip" } do |f| %>   @move.id %>   builder %>   

application_helper.rb

  def link_to_remove_fields(name, f) f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)") end 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, :f => builder) end link_to_function(name, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")) end 

的application.js

 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)); } 

你试过添加:

 class Itinerary < ActiveRecord::Base attr_accessible :move_id, :trips_attributes accepts_nested_attributes_for :trips end 

当然,您还需要为您的行程模型添加字段。 不知道那些我会猜测它们是什么。

我和你有完全相同的问题。 我通过删除线来修复它

 validates_associated :parent_model 

来自嵌套模型(在您的情况下是Trip模型)。

我有类似的问题。 从父模型中删除attr_accessible行对我来说是个窍门。 我看到你的Itenerary模型已经没有那条线,所以这可能对你没有帮助; 但可能会帮助别人。