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文件。