如果使用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模型已经没有那条线,所以这可能对你没有帮助; 但可能会帮助别人。