删除确认消息提前关闭在Rails应用程序

Delete Confirmation Message Closes Prematurely in Rails App

本文关键字:Rails 应用程序 确认 消息 删除      更新时间:2023-09-26

我有一个coffeescript文件,它覆盖了rails确认弹出窗口,而是使用引导模式来确认删除操作。

#delete.js.coffee
ready = ->
    $.rails.allowAction = (element) ->
      message = element.data('confirm')
      return true unless message
      $link = element.clone()
        .removeAttr('class')
        .removeAttr('data-confirm')
        .addClass('btn').addClass('btn-danger')
        .html("Delete")
      modal_html = """
                                    <div class="modal fade">
                                      <div class="modal-dialog">
                                        <div class="modal-content">
                                          <div class="modal-header">
                                            <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                                            <h4 class="modal-title">#{message}</h4>
                                          </div>
                                          <div class="modal-body">
                                            <p>Be certain, sony.</p>
                                          </div>
                                          <div class="modal-footer">
                                            <a data-dismiss="modal" class="btn">Cancel</a>
                                          </div>
                                        </div>
                                      </div>
                                    </div>  
                   """
      $modal_html = $(modal_html)
      $modal_html.find('.modal-footer').append($link)
      $modal_html.modal()
      return false
$(document).ready(ready)
$(document).on('page:load', ready)

上面的代码工作正常,除非它是从一个表调用时,模态弹出正确,但随后迅速关闭。这个表有一个可点击的行功能,它链接到show视图。

#users.js.coffee
ready = ->
  $("tr[data-link]").click ->
    window.location = @dataset.link
    return
  return
$(document).ready ready
$(document).on "page:load", ready

下面是表体,这里有一个可点击的tr和一个用于删除用户的嵌入链接:

    #index.html.erb
    <tbody>
      <% @users.each do |user| %>
        <tr data-link="<%= user_path(user) %>">
          <td><%= user.name %></td>
          <td><%= user.email %></td>
          <td><%= user_status(user) %>
            <% unless current_account.owner == user || user.invitation_accepted? %>
              <%= form_for(User.new, url: user_invitation_path) do |f| %>
                <%= f.hidden_field :email, :value => user.email %>
                <%= f.submit 'Resend Invite', class: 'btn btn-default' %>
              <% end %>  
            <% end %>                     
          </td>
          <td>
            <% unless current_account.owner == user %>
              <%= link_to '', user_path(user), data: {confirm: 'Are you sure you want to delete this user, no take backsies?'}, method: :delete, :class => 'glyphicon glyphicon-remove text-danger' %>
            <% end %>
          </td>
        </tr>
      <% end %>
    </tbody>

这是rails 4应用中启用了turbollinks的一部分

两个点击事件绑定到删除按钮,当它在表内。

将click事件绑定到表行

时可以忽略删除按钮
ready = ->
  $("tr[data-link]").not('[data-confirm]').click ->
    window.location = @dataset.link
    return
  return