【问题标题】::confirm option in Rails being ignored while using Rails 3 and jQuery UJS使用 Rails 3 和 jQuery UJS 时忽略 Rails 中的 :confirm 选项
【发布时间】:2010-05-21 04:23:42
【问题描述】:

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

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

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

关于如何解决这个问题的任何想法?我正在使用带有 jQ​​uery 库和随附的 jQuery UJS 库的 Rails 3 Beta 3。

【问题讨论】:

    标签: javascript ruby-on-rails


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      然后确保您的模板标题中有以下内容

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

      就是这样 =)

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          您将不得不发布有关您的 Rails 和更多代码的更多信息。由于link_to:confirm 选项一起正常工作。

          我可以建议两件事,

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-02-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-13
            • 2011-09-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多