Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RoR:通过jQuery、远程调用删除表单字段_Jquery_Ruby On Rails - Fatal编程技术网

RoR:通过jQuery、远程调用删除表单字段

RoR:通过jQuery、远程调用删除表单字段,jquery,ruby-on-rails,Jquery,Ruby On Rails,使用jQuery remove()函数从表单中删除某些字段时遇到一些问题。在视图中,我有一个表单。此表单有一组用于某些子元素的循环字段。用户可以删除每一组。我在控制器中使用远程调用destroy方法,该方法使用jquery调用js文件,jquery将淡出并删除包含相关字段集的div 我的问题是,尽管对象被销毁,div很好地淡出,但字段仍然处于活动状态,因此在发布表单时显然会出现错误 我尝试添加一个fieldset标记,并在div之外删除它,还尝试禁用整个fieldset,但结果是一样的。字段仍在

使用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();)这对我不起作用。。。