RoR:通过jQuery、远程调用删除表单字段
使用jQuery remove()函数从表单中删除某些字段时遇到一些问题。在视图中,我有一个表单。此表单有一组用于某些子元素的循环字段。用户可以删除每一组。我在控制器中使用远程调用destroy方法,该方法使用jquery调用js文件,jquery将淡出并删除包含相关字段集的div 我的问题是,尽管对象被销毁,div很好地淡出,但字段仍然处于活动状态,因此在发布表单时显然会出现错误 我尝试添加一个fieldset标记,并在div之外删除它,还尝试禁用整个fieldset,但结果是一样的。字段仍在发布中(由于对象已被销毁,因此返回了一个错误) 这是观点的相关部分RoR:通过jQuery、远程调用删除表单字段,jquery,ruby-on-rails,Jquery,Ruby On Rails,使用jQuery remove()函数从表单中删除某些字段时遇到一些问题。在视图中,我有一个表单。此表单有一组用于某些子元素的循环字段。用户可以删除每一组。我在控制器中使用远程调用destroy方法,该方法使用jquery调用js文件,jquery将淡出并删除包含相关字段集的div 我的问题是,尽管对象被销毁,div很好地淡出,但字段仍然处于活动状态,因此在发布表单时显然会出现错误 我尝试添加一个fieldset标记,并在div之外删除它,还尝试禁用整个fieldset,但结果是一样的。字段仍在
- i = 0 # a bit crude, see if can make index count more Railsy
= f.simple_fields_for :fund_levels do |fl|
%div{id: "flheader-#{fl.object.id}"}
%div
= link_to "Sponsor levels", "#", :class => "show_hide", :id => "initiator1_fl#{i}", :style=>"margin-bottom:2px;", :onclick=>"return false"
%div{:class => "slidingDiv #{fund_levels_last?(i, @fund_level_count) ? "shown": "hidd" } whitebg leftadj", :id=>"body_fl#{i}", :style=>"width:100%;" }
= fl.input :title
= fl.input :description
= fl.input :maxnumber
= fl.input :price
%div{:style => "float: right; padding: 20px 20px 20px 0"}
= fund_levels_last?(i, @fund_level_count) ? ( link_to "add new level", ad, {class: 'button orange sm'} ) : ( link_to "remove", accounts_ad_fund_level_path(ad, fl.object.id), {:class => 'button orange sm', :method => :delete, :remote => true, :confirm => t('q.are_you_sure')} )
- i += 1
这是jQuery调用
$('#flheader-<%= @fundlevel.id %>').fadeOut(300, function() { $(this).remove(); });
$('#flheader-').fadeOut(300,function(){$(this.remove();});
正如我所说,该物体被成功摧毁,div消失。我只需要弄清楚如何在发布时从页面中完全删除删除的对象(字段集)
EDIT:问题似乎在于,简单的\u字段\u在每个循环的开头立即生成一个隐藏的ID字段。这意味着ID字段实际上位于正在被销毁的div之外,因此正在被发布。关于如何强制隐藏的id字段位于DIV内的问题,有什么想法吗?好的,经过几个小时的研究,我解决了这个问题 首先,为了避免对象ID打印在循环div之外,有必要手动将对象ID包含为隐藏字段。完成此操作后,简单表单不会自动包含它,因此您可以将其放置在需要的位置
此外,如果values.all为空,则有必要对主窗体控制器进行更改,以允许销毁和拒绝。\.remove();)这对我不起作用。。。