【问题标题】:method: => :delete not working and :confirm option ignored方法:=> :delete 不起作用并且 :confirm 选项被忽略
【发布时间】:2008-12-10 06:13:52
【问题描述】:

返回旧的 Rails 项目后,我发现销毁/删除链接都不起作用,在确认弹出窗口中单击取消仍会提交链接。

我的代码示例是:

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

【问题讨论】:

  • 我在使用 jQuery 的 Rails 3 应用程序中遇到了同样的问题。你找到解决方案了吗?

标签: javascript ruby-on-rails


【解决方案1】:

如果您使用的是 jQuery,则会出现此问题,如果没有,请查找类似的内容:

就我而言,我使用的是:

javascript_include_tag :all %>

它不起作用,但是当我这样说时:

javascript_include_tag :defaults %>

成功了!

【讨论】:

    【解决方案2】:

    克里斯,嗨。我有同样的问题。我删除了 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 => 'Are you sure?', :method => :delete 结束

    这是对 DRY 的一次(很好的)尝试,但如果我只有 def delete_icon(object),而不是 object=nil,那就更好了,因为当我调用它时,它更清楚我必须传递它破坏的对象。对要删除的对象调用相同的方法对我有用。

    简而言之:如果您尝试 DRY,请仔细检查您的辅助方法。

    【讨论】:

      【解决方案3】:

      就我而言,这似乎是原型和 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 下载了最新的rails.js,从https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js 下载了最新的原型。

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

      【讨论】:

        【解决方案4】:

        这是一种使用 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?"
        

        【讨论】:

          【解决方案5】:

          大多数情况下,这是因为您在加载 jQuery 代码之前调用它,或者在页面中的元素存在之前调用它。

          要解决这个问题,请使用以下方法:

          $(document).ready(function () {
            $('*[data-confirm]').click(function(){
              return confirm($(this).attr('data-confirm'));
            });
          });
          

          【讨论】:

            【解决方案6】:

            这里是快速解决方案 - 只需将符合替换为数据确认

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

            【讨论】:

              【解决方案7】:

              尝试使用

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

              之前

              <%= javascript_include_tag "application" %> 
              

              在你的布局中,也可以删除

              //= require jquery
              

              application.js 中的行。

              对我来说就是这种情况。不知道为什么它不适用于原始 rails jquery.js 文件。

              【讨论】:

                猜你喜欢
                • 2015-02-15
                • 2018-08-04
                • 2021-01-31
                • 1970-01-01
                • 1970-01-01
                • 2016-07-09
                • 1970-01-01
                • 2015-02-08
                • 2012-09-01
                相关资源
                最近更新 更多