【问题标题】:Delete Confirmation Message Closes Prematurely in Rails App删除确认消息在 Rails 应用程序中过早关闭
【发布时间】:2014-10-17 04:38:55
【问题描述】:

我有一个咖啡脚本文件,它覆盖了 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)

上面的代码可以正常工作,除非在模态正确弹出但很快关闭时从表格中调用它。该表格具有可点击的行功能,可链接到显示视图。

#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>

这是启用了 turbolinks 的 rails 4 应用程序的一部分。

【问题讨论】:

    标签: javascript ruby-on-rails twitter-bootstrap coffeescript


    【解决方案1】:

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

    将点击事件绑定到表格行时可以忽略删除按钮

    ready = ->
      $("tr[data-link]").not('[data-confirm]').click ->
        window.location = @dataset.link
        return
    
      return
    

    【讨论】:

    • 不幸的是,这不起作用。从那以后,这两个点击事件就变得完美了。如果我删除自定义数据确认,则会发生类似事件,消息不会自动关闭,但如果我取消,它将进入第二次点击事件所指示的视图,而不是关闭确认消息。跨度>
    • 你能显示你的视图代码吗,你在哪里遇到这个问题?
    • 我添加了带有 tr 链接的 tbody 和嵌入的 delete link_to
    • 为什么你添加 user_path(user) 来删除链接,没有意义,可能是错误的原因。
    • 将代码更新为:&lt;%= link_to '', user, data: {confirm: 'Are you sure you want to delete this user, no take backsies?'}, method: :delete, :class =&gt; 'glyphicon glyphicon-remove text-danger' %&gt; 但问题依然存在,嗯,这个问题只是想继续战斗。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    相关资源
    最近更新 更多