方法:=>:删除不工作,并且:忽略确认选项

问题描述:

返回到旧的Rails项目后,我发现没有任何销毁/删除链接起作用,并且单击取消确认弹出窗口仍然会提交链接。我的代码方法:=>:删除不工作,并且:忽略确认选项

例子是:

<%= link_to 'Delete', admin_user_path(@user), :confirm => 'Are you sure?', :method => :delete %> 
+1

我在使用jQuery的Rails 3应用程序中遇到了同样的问题。你有没有找到解决方案? – Callmeed 2011-02-11 19:10:31

这个问题,如果没有,然后寻找类似的东西:

在我的情况,我用的是:

javascript_include_tag:所有%>

而且它不工作,但是当我把它想:

javascript_include_tag:默认%>

它的工作!

+0

jquery,对...忘了那个。 – 2011-01-28 22:31:11

克里斯,你好。我有同样的问题。我删除了Firebug,问题依然存在。我从另一个用户那里读到他需要重新启动Firefox,但这也不起作用。有人说尝试Safari,那也没用。

最后,这是一个新手的事情:

我有助手插入一个图标,像edit_icon,它会返回一个良好的形象标签的编辑图标等

其中的一个辅助方法是delete_icon方法,我这样写:

def delete_icon(object = nil) link_to image_tag('icons/delete.jpg',:width => 20,:border => 0),object,:确认=>'你确定吗?',:方法=>:删除 结束

这是DRY的一个(良好的)尝试,但是如果我只有def delete_icon(object),而不是object = nil,那么它会更好,因为它使得它更加清晰,当我调用它时必须将它传递给对象摧毁。调用与要删除的对象相同的方法为我工作。

简而言之:如果您尝试干燥,请仔细检查您的帮助器方法。如果你正在使用jQuery发生

在我的情况下,它似乎是一个原型和rails.js旧组合的问题。这个问题的答案让我想到::confirm option in Rails being ignored while using Rails 3 and jQuery UJS

所以我从https://github.com/rails/prototype-ujs/raw/master/src/rails.js和最新的原型https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js下载了最新的rails.js。

现在一切似乎按预期工作。

下面是使用jQuery提供所有删除按钮进行同样的确认方式:

;(function($){ 
    $(function(){ 
    $('input.destroy').click(function(){ 
     return confirm($(this).attr('data-confirm')); 
    }); 
    }); 
})(jQuery); 

你一定要一定要添加类=“消灭”每个元素,如:

= button_to 'Delete', polygon, :method => :delete, :class => "destroy", :confirm => "Are you sure?" 

大多数情况下,这是因为您在加载之前或在页面中的元素存在之前调用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 %> 

尝试

之前使用

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> 

<%= javascript_include_tag "application" %> 

在你的布局,并且还删除您的application.js

//= require jquery 

线。

这是我的情况。不知道为什么它不适用于原始轨道jquery.js文件。