【问题标题】::confirm in rails not working:confirm in rails not working
【发布时间】:2013-03-25 20:54:37
【问题描述】:

我刚开始使用 ruby​​ on rails 进行编码,我一直在关注一个指南,该指南使用的 Rails 版本比我现在使用的版本更过时。我正在使用 3.2.12

这是我的代码:

<%= button_to 'Destroy', product, :method => "delete", :confirm => 'Are you sure?'  %>

据我了解,这些是传递给 rails 的符号,然后将其转换为 html 或 javascript 操作,然后弹出消息框并删除对象(如果适用)。上面的代码销毁了对象,但是并没有弹出确认框。为什么是这样?另外,我一开始是这样的:

<%= link_to 'Destroy', product, :method => "delete", :confirm => 'Are you sure?'  %>

使用link_to或button_to在任何情况下都不会弹出确认框。下面是使用 Chrome 的检查器检查时呈现的 html。 jquery 和 jquery-ujs 也被加载到了,所以我不知道从哪里开始。

<input name="_method" type="hidden" value="delete">
<input data-confirm="Are you sureeee?" type="submit" value="Destroy">
<input name="authenticity_token" type="hidden" value="Q2xicqELHYHtrwarbtPBe5PT2bZgWV5C+JdcReJI8ig=">

谢谢!

【问题讨论】:

    标签: ruby-on-rails link-to button-to


    【解决方案1】:

    我在 Chrome 中运行了一个弹出窗口阻止程序。我刚刚将http://localhost:3000 列入白名单,它对我有用。

    【讨论】:

      【解决方案2】:

      我必须在数据属性中添加我的确认属性才能使其工作。我正在使用带有引导程序的 Rails 4。我希望这可以帮助遇到这个问题的其他人。

      link_to 'Delete', @rule, method: :delete, data: { confirm: 'Are you sure you want to delete this alert?' }
      

      【讨论】:

      • 使用 Rails 4 和 Foundation 为我工作。谢谢!
      • 在 Rails 6 上为我工作。谢谢!
      【解决方案3】:

      感觉很愚蠢,但 adblock 阻止了消息框。对于那个很抱歉。现在一切都很好,我只是禁用了广告拦截。

      【讨论】:

        【解决方案4】:

        link_to 和 button_to 的区别在于 HTTP 动词。 link_to 发出 GET 请求,而 button_to 发出 POST 请求。对于 RESTful 路由,delete 操作是对 controller/id 的 POST 请求。如果您向 controller/id 发出 GET,它将被分派到 show 操作。

        AIUI,link_to 与 GET 动词以外的任何内容都是一个坏主意。一,右键单击不保留动词。第二,即使您可能需要登录才能实际修改数据库,您也不希望爬取页面的机器人跟随链接并因此触发delete 操作。

        【讨论】:

        • 感谢您的解释。非常有用,现在更有意义。但是,我仍然对如何弹出 :confirm 感到好奇。这仍然不适合我。
        【解决方案5】:

        这依赖于 jQuery,请确保您拥有以下内容:

        在您的 Gemfile 中

        group :assets do
          gem 'jquery-rails'
        end
        

        在您的 assets/javascripts/application.js 文件中,//= require_tree . 行之前

        //= require jquery
        //= require jquery_ujs
        

        【讨论】:

        • 你说的两个标签我都有,但是还是没有弹出确认框
        • 我想你 bundle install 并重新启动了你的 Rails 服务器?
        • 如何测试 javascript 是否正常工作?我不认为它是,我认为这是问题所在。我只是不确定是什么原因造成的。
        • 是的,我已经运行了捆绑安装并重新启动了服务器。没有运气。我还注意到,在使用 chrome 进行调试并单击应该弹出 :confirm 的按钮时,控制台中没有出现任何内容。此外,我的 gemfile.lock 显示 jquery-rails (2.2.1)。还有什么我可能遗漏的吗?
        • 另外,当我在页面上运行查看源代码时,这是我为该按钮获得的 HTML。
        猜你喜欢
        • 2012-09-16
        • 2014-11-21
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        • 2022-12-27
        • 1970-01-01
        • 1970-01-01
        • 2021-07-11
        相关资源
        最近更新 更多