method:=>:删除不工作并且:忽略确认选项
在返回旧的Rails项目后,我发现没有任何破坏/删除链接工作,并且在确认弹出窗口上单击取消仍然会提交链接。
我的代码示例是:
'Are you sure?', :method => :delete %>
如果您使用的是jQuery,则会出现此问题,如果没有,则查找类似的内容:
就我而言,我正在使用:
javascript_include_tag:所有%>
它不起作用,但当我这样说时:
javascript_include_tag:默认%>
有效!
克里斯,嗨。 我有同样的问题。 我删除了Firebug并且问题仍然存在。 我从另一个用户那里读到他需要重新启动Firefox,这也不起作用。 有人说试试Safari,也没用。
最后这是一个新手:
我有帮助器来插入一个图标,比如edit_icon,它为编辑图标返回一个漂亮的图像标签,等等。
其中一个辅助方法是delete_icon方法,我这样编写:
def delete_icon(object = nil)link_to image_tag(’icons / delete.jpg’,:width => 20,:border => 0),object,:confirm =>’你确定吗?’,:method =>:delete结束
这是DRY的一个(好的)尝试,但是如果我只有def delete_icon(对象),而不是object = nil,那就更好了,因为当我调用它时它会让它更清晰我必须将它传递给对象来销毁它。 调用与要删除的对象相同的方法对我有用。
简而言之:如果你想干,请仔细检查你的辅助方法。
在我的情况下,似乎是原型和rails.js的旧组合的问题。 这个问题的答案使我得出: 在使用Rails 3和jQuery UJS时,Rails中的确认选项被忽略
所以我从https://github.com/rails/prototype-ujs/raw/master/src/rails.js下载了最新的rails.js,并从https://ajax.googleapis.com/ajax/libs下载了最新的原型。 /prototype/1.7.0.0/prototype.js 。
现在一切似乎都按预期工作了。
这是一种使用jQuery为所有删除按钮提供相同确认的方法:
;(function($){ $(function(){ $('input.destroy').click(function(){ return confirm($(this).attr('data-confirm')); }); }); })(jQuery);
你必须确保为每个元素添加class =“destroy”,例如:
= button_to 'Delete', polygon, :method => :delete, :class => "destroy", :confirm => "Are you sure?"
大多数情况下,这是因为您在加载jQuery代码之前或者在页面中的元素存在之前调用jQuery代码。
为了解决这个问题,可以使用以
$(document).ready(function () { $('*[data-confirm]').click(function(){ return confirm($(this).attr('data-confirm')); }); });
这是快速解决方案 – 只需替换符合数据确认
<%= link_to 'Delete', admin_user_path(@user), 'data-confirm' => 'Are you sure?', :method => :delete %>
尝试使用
之前
<%= javascript_include_tag "application" %>
在你的布局中,也删除
//= require jquery
你的application.js中的一行。
这就是我的情况。 不知道为什么它不适用于原始rails jquery.js文件。