gpt4 book ai didi

ruby-on-rails - 嵌套表格: link_to_add: customizing to work with multiple fields_for builders

转载 作者:行者123 更新时间:2023-12-01 00:28:27 25 4
gpt4 key购买 nike

我有一个带有嵌套子对象类型的嵌套表单,该对象类型在表单上重复,以便我可以在表单元素中应用各种不同的默认值。对我来说将它们分成不同类的子对象是没有意义的,因为我只是为了以对用户有意义的方式组织它们并填充不同的默认值而将它们分开;它们在其他方面是相同的。

在我的部分,我有这样的东西:

Children 1
<%= f.fields_for :children do |builder| %>
<% next if not builder.object.type == 1 %>
... fields for type 1 children ...
<% end %>
<%= f.link_to_add( "add child", :children ) %>

Children 2
<%= f.fields_for :children do |builder| %>
<% next if not builder.object.type == 2 %>
... fields for type 2 children ...
<% end %>
<%= f.link_to_add( "add child", :children ) %>

... etc ...

这工作正常,除了 link_to_add 总是给出具有最终 fields_for/builder block 的默认值的字段(即 N 型子项),而不是使用默认值对于紧邻其上方的 fields_for/builder block 。如何为 link_to_add 提供正确的功能?

来自https://github.com/ryanb/nested_form#enhanced-jquery-javascript-template :

You can override default behavior of inserting new subforms into your form. For example:

 window.nestedFormEvents.insertFields = function(content, assoc, link) {
return $(link).closest('form').find(assoc + '_fields').append($(content));
}

在我看来,必须对此 insertFields 函数进行一些小调整,使其复制所需的表单元素,而不仅仅是页面上的最终元素。我对 javascript 的经验很浅,所以我希望有人能指出那是什么!

仅供引用,完整的 jquery 文件在这里: https://github.com/ryanb/nested_form/blob/master/vendor/assets/javascripts/jquery_nested_form.js

非常感谢,斯科特

最佳答案

我忘记发布我为这个问题找到的解决方案。迟来的,就在这里。

我最终为我的子类型使用了单表继承(STI),使每个类型都成为一个类,尽管这对我来说有点过分了。然后,以下工作有效:

<h>ClassOneChild form</h>
<%= f.fields_for :class_one_children do |builder| %>
...
<% end %>
<%= f.link_to_add( "add child", :class_one_children ) %>

<h>ClassTwoChild form</h>
<%= f.fields_for :class_two_children do |builder| %>
...
<% end %>
<%= f.link_to_add( "add child", :class_two_children ) %>

...

<%= f.submit "Save Children" %>

关于ruby-on-rails - 嵌套表格: link_to_add: customizing to work with multiple fields_for builders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708571/

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