gpt4 book ai didi

jquery - Rails 3嵌套模型形式创建重复的模型对象

转载 作者:行者123 更新时间:2023-12-01 06:01:36 24 4
gpt4 key购买 nike

我按照 Ryan Bates 的教程 ( Episode 196 - Nested Model Forms (Revised) ) 为具有嵌套 has_many :through 模型 (Employee) 的模型 (Employee) 创建表单 ( 能力)。大多数情况下它是有效的;但是,当我单击链接将新模型对象添加到表单时,将创建并插入两个。我不知道为什么——我已经为此苦苦挣扎了几个晚上,但就是无法解决。谁能指出我哪里错了?

(Capability 此处表示 has_many through 关联:Employee has_many :roles, through: :capability)。

形成部分

<%= form_for(@employee) do |f| %>

# Employee fields here ...

<%= f.fields_for :capabilities do |builder| %>
<%= render 'capability_fields', f: builder %>
<% end %>
<%= link_to_add_fields "Add capability", f, :capabilities %>

<%= f.submit "Submit", :class => 'submit' %>
<% end %>

capability_fields 部分

<fieldset>
<%= f.select :role_id, Role.all.collect{ |r| [r.name, r.id]} %>
<%= f.check_box :primary_role_flag %>
<%= f.text_field( :valid_from, :class => 'date') %>
<%= f.text_field( :expires_on, :class => 'date') %>
<%= f.hidden_field :_destroy %>
<%= link_to "Remove", '#', class: "remove_fields" %>
</fieldset>

link_to_add_fields 应用程序帮助程序

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','&#xA')})
end

jQuery CoffeeScript

jQuery ->
$('form').on 'click', '.remove_fields', (event) ->
$(this).prev('input[type=hidden]').val('1')
$(this).closest('fieldset').hide()
event.preventDefault()

$('form').on 'click', '.add_fields', (event) ->
time = new Date().getTime()
regexp = new RegExp($(this).data('id'), 'g')
$(this).before($(this).data('fields').replace(regexp, time))
event.preventDefault()

最佳答案

这可能没有帮助,但在我的例子中,问题似乎可以追溯到 Decent Exposure gem 。

编辑:好吧,看起来这是我的错,而不是体面的曝光。我使用以下方式显式设置属性:

gallery.attributes = params[:gallery]

我这样做是因为我需要在保存记录之前检查权限。只是事实证明 Decent Exposure 已经为我做到了这一点。因此,造成重复。我知道这可能无法解决您的问题,但是我所要做的就是从我的 Controller 中删除该行,一切正常。

我希望至少能让您了解应该看什么。

关于jquery - Rails 3嵌套模型形式创建重复的模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10991640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com