gpt4 book ai didi

jquery - cocoon Nested_form 将字段添加到 edit.html.erb 中现有对象的上方而不是下方

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

我的 new.html.erb 工作正常。

但是在我的 edit.html.erb 中,假设我有 3 个现有部门...

每当我单击“添加部门”链接(以添加另一个字段)时,它都会继续位于现有部门上方,而不是下方。

顺便说一句,我协会说部门有很多部门,部门也属于部门。

在我的 Controller 中:有我的新方法和编辑方法

def new
@division = Division.new
@division.departments.build
end

def edit
@division = Division.find(params[:id])

end

我需要 cocoon js 文件,因此我使用默认值,而不是覆盖其他内容。

cocoon.js

(function($) {

function replace_in_content(content, regexp_str, with_str) {
reg_exp = new RegExp(regexp_str);
content.replace(reg_exp, with_str);
}

function trigger_removal_callback(node) {
node.parent().parent().trigger('removal-callback');
}

$('.add_fields').live('click', function(e) {
e.preventDefault();
var $this = $(this),
assoc = $this.data('association'),
assocs = $this.data('associations'),
content = $this.data('template'),
insertionMethod = $this.data('association-insertion-method') || $this.data('association-insertion-position') || 'before';
insertionNode = $this.data('association-insertion-node'),
insertionCallback = $this.data('insertion-callback'),
removalCallback = $this.data('removal-callback'),
regexp_braced = new RegExp('\\[new_' + assoc + '\\]', 'g'),
regexp_underscord = new RegExp('_new_' + assoc + '_', 'g'),
new_id = new Date().getTime(),
newcontent_braced = '[' + new_id + ']',
newcontent_underscord = '_' + new_id + '_',
new_content = content.replace(regexp_braced, '[' + new_id + ']');

if (new_content == content) {
regexp_braced = new RegExp('\\[new_' + assocs + '\\]', 'g');
regexp_underscord = new RegExp('_new_' + assocs + '_', 'g');
new_content = content.replace(regexp_braced, '[' + new_id + ']');
}

new_content = new_content.replace(regexp_underscord, newcontent_underscord);

if (insertionNode){
insertionNode = insertionNode == "this" ? $this : $(insertionNode);
} else {
insertionNode = $this.parent();
}

var contentNode = $(new_content);

// allow any of the jquery dom manipulation methods (after, before, append, prepend, etc)
// to be called on the node. allows the insertion node to be the parent of the inserted
// code and doesn't force it to be a sibling like after/before does. default: 'before'
insertionNode[insertionMethod](contentNode);

$this.parent().trigger('insertion-callback');
});

$('.remove_fields.dynamic').live('click', function(e) {
var $this = $(this);
trigger_removal_callback($this);
e.preventDefault();
$this.closest(".nested-fields").remove();
});

$('.remove_fields.existing').live('click', function(e) {
var $this = $(this);
trigger_removal_callback($this);
e.preventDefault();
$this.prev("input[type=hidden]").val("1");
$this.closest(".nested-fields").hide();
});

})(jQuery);

在我的_form.html.erb中

<div class="new-div-box">
<%= simple_form_for [:admin, @division] do |f| %>
<%= f.input :name, :label => "Division Name"%>

<div>
<div>

<%= f.simple_fields_for :departments do |department| %>
<%= render 'department_fields', :f => department %>

<% end %>
</div>
<%=link_to_add_association "Add Department", f, :departments,class: "btn btn-inverse" %>
</div>

<%= f.submit :class=>"btn btn-primary submit_btn_division" %>

<% end %>

</div>

我渲染的是_department_fields.html.erb

<div class="nested-fields">
<%= f.input :name, :label => "Department Name" %>
<%= link_to_remove_association raw("<img src='../../../assets/remove.png' width='25px' height='25px'>"), f %>
</div>

我想知道为什么新添加的字段高于我的 edit.html.erb 中的现有字段

最佳答案

我认为它会寻找一个带有关联的 div 作为包装嵌套字段的 id。

所以你的看法

<div id="departments">
<%= f.simple_fields_for :departments do |department| %>
<%= render 'department_fields', :f => department %>
<% end %>
<div class="links">
<%=link_to_add_association "Add Department", f, :departments,class: "btn btn-inverse" %>
</div>
</div>

关于jquery - cocoon Nested_form 将字段添加到 edit.html.erb 中现有对象的上方而不是下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13816752/

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