【问题标题】:rails confirm before deleterails在删除前确认
【发布时间】:2013-10-25 11:02:57
【问题描述】:

这是我的rails link_to

<%= link_to 'Delete',url_for(action: :delete,id: @user.id),data: {confirm: "Are you sure?"} %>

我尝试了上述方法,但它是直接删除而没有任何警告消息。我做错了什么。哪位大神可以指正一下。

【问题讨论】:

  • 您的应用中是否包含 jquery.js?
  • @Debadatt 是的,包括

标签: ruby-on-rails ruby-on-rails-3.2 ruby-on-rails-4


【解决方案1】:

试试这个

<%= link_to 'Delete',url_for(action: :delete,id: @user.id),method: :delete, data: {confirm: "Are you sure?"} %>

【讨论】:

  • 不管怎样,data 哈希是此处提供的解决方案中唯一对我有用的选项。 Rails 4.1.2、Ruby 2.1.2p95、jquery-rails 3.1.1。也就是说,在其他应用程序中,我在data 哈希之外使用了confirm 选项,作为link_to 的参数,并且它完全有效。什么给了?
  • 这在 Rails 4.1 中困扰了我一段时间,没有将确认放入数据哈希中,属性呈现为“确认”而不是正确的“数据确认”
  • 他们在 Rails 4 中是否将其更改为数据确认?
【解决方案2】:

rails 4.1.8 的答案(问题不包括版本)

和标准资源(也未指定)

  1. //= jquery_ujs 必须包含在 application.js 中(可能缺失)
  2. 网址是user_path(@user)
  3. 指定:method =&gt; :delete(缺失)
  4. :data 内确认消息(很好)
  5. 销毁方法在控制器中(不是删除)

= link_to t(:delete) , user_path(@user), :method => :delete, :class=> "btn btn-danger", :data => {:confirm => t(:are_you_sure )}

问题中的 url 似乎创建了一个 GET,而不是一个 DELETE 方法。如果指定了 :method,这可能会起作用。恕我直言,不幸的是没有单独命名的 url 帮助器。

【讨论】:

  • //= jquery_ujs 添加在 //= jquery 之后,它现在就像魅力一样工作
【解决方案3】:
link_to('Delete', {controller: :controller_name, id: id, action: :action_name}, confirm: "Are you sure you want to delete this?", method: :delete)

【讨论】:

    【解决方案4】:
    1. 我认为你应该使用 :method 选项

      &lt;%= link_to 'Delete',url_for(action: :delete,id: @user.id), method: :delete, confirm: "Are you sure?" %&gt;

    2. 这种操作最好使用按钮(和表单)

    【讨论】:

    • 试过但没有工作,当我检查我可以看到data-confirm="Are you sure?"data-method="delete"
    • 好的,我很确定,语法是正确的 - 请再检查一次。它应该是 。
    【解决方案5】:

    用于销毁操作的 Rails 确认弹出框:

        <%= link_to 'Show', article_path(article),{:class=>'btn btn-success show_article' }%>
        <%= link_to 'Edit', edit_article_path(article),{:class=>'btn btn-warning edit'} %>
        <%= link_to 'Destroy', '#', "data-toggle"=>"modal", "data-target" => "#delete-#{article.id}",:class=>'btn btn-danger' %>
        <div class="modal fade" id="delete-<%= article.id %>" role="dialog">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">Confirmation Box</button>
              </div>
              <div class="modal-body">
                <p>Are you sure to delete this article</p>
              </div>
              <div class="modal-footer">
                <div class="modal-footer">
                  <%= link_to 'Delete', article_path(article), method: :delete, :class => 'btn btn-danger' %>
                    <a href="#" data-dismiss="modal" class="btn btn-warning">Cancel</a>
                </div>
              </div>
            </div>
          </div>
       </div>
    </td>
    

    【讨论】:

      【解决方案6】:

      检查以下链接:

      <%= link_to 'Delete',url_for(action: :delete,id: @user.id), confirm: "Are you sure?" %>
      

      【讨论】:

        【解决方案7】:

        确保您同时包含 jQuery 库和 Rails 的 jQuery 驱动程序。据我所知,jquery-rails gem 将在更高版本的 Rails 中处理这两个问题。

        此外,为了更好地与 jQuery 驱动程序的未来版本兼容,请将 :confirm 选项移到 :data 之外,并让 jquery-rails gem 决定如何处理它。

        【讨论】:

          【解决方案8】:

          对于那些努力寻找可与 Rails 7 中的 Turbo 一起使用的解决方案的人来说,这是一个简短的提示:

          <%= link_to 'Delete', url_for(action: :delete, id: @user.id),
            data: {turbo_method: :delete, turbo_confirm: 'Are you sure?'} %>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-25
            • 1970-01-01
            • 1970-01-01
            • 2018-02-03
            • 2018-04-03
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多