:使用Rails 3和jQuery UJS时,Rails中的确认选项被忽略

时间:2010-05-21 04:23:43

标签: javascript ruby-on-rails

我的Rails应用程序中有一个项目表,每个项目都有一个删除链接,如下所示:

<%= link_to "Delete", project, :confirm => "Are you sure?", :method => :delete %>

但是,即使用户在对话框中单击“取消”,也会发送删除请求。

有关如何解决此问题的任何想法?我正在使用Rails 3,Beta 3,jQuery库和附带的jQuery UJS库。

4 个答案:

答案 0 :(得分:5)

您需要获取更新版本的rails.js。我使用相同的设置遇到了同样的问题。当我对旧版本和新版本进行区分时,我发现旧版本中的确认处理程序已被注释掉。新版本解决了这个问题。

答案 1 :(得分:3)

如果您使用 jQuery ,请从(http://github.com/rails/jquery-ujs/blob/master/src/rails.js)下载 rails.js 并将其放入p ublic / javascripts 文件夹中。

然后确保模板标题上有以下内容

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" %>
<%= javascript_include_tag 'rails' %>
<%= csrf_meta_tag %>

就是这样=)

答案 2 :(得分:0)

我认为你在Table Row中使用了链接。 您可能会在表格行中使用onclick函数,因此当您在删除链接上确认弹出窗口时,当您单击取消时,您的onclick函数将被执行。

这是一个假设,但它可能对您有所帮助。如果没有,请使用相关代码编辑您的问题。

答案 3 :(得分:0)

您将不得不发布有关您的rails和更多代码的更多信息。由于link_to适用于:confirm选项。

我可以建议两件事,

  1. 尝试link_to "Delete", project, { :confirm => "Are you sure?", :method => :delete }(早期版本的rails无法处理没有{}的选项。
  2. 查看为该片段生成的html,看看它是否有javascript,如果没有,请尝试在代码的另一部分放置一个带有确认的普通旧link_to并检查。