【问题标题】:How do I pass values from a ruby back-end to a jquery confirmation dialog?如何将值从 ruby​​ 后端传递到 jquery 确认对话框?
【发布时间】:2018-01-26 18:05:38
【问题描述】:

我正在构建一个带有 Ruby 后端(主要是 Sinatra,而不是 Rails)的 Web 应用程序。该应用程序用于管理机构、人员及其订阅。

我希望在用户删除某些内容时有自定义确认对话框。例如:

如果用户删除了一个名为“A公司”的机构,我想说:Are you sure you want to delete Company A

如果他们删除了一个叫“John Doe”的人,我想说:Are you sure you want to delete John Doe?

如果他们删除 John Doe 的订阅,称为“订阅 A”,我想说:Are you sure you want to delete Subscription A from John Doe

我目前有一个基于 jQuery 的删除确认对话框,如下所示:

$('a.delete-action').click(function(event) {

    if (confirm("Are you sure you want to delete this?")) {
        return true;
    }

    return false;
});

相关的 HTML 和 ERB 是:

<p><a class="action-link delete-action" href="/institutions/<%= @institution.id %>/remove">Remove <%= @institution.name %></a></p>

如何将机构/人员/订阅/所有这些内容的名称传递给 jQuery 对话框?

提前致谢!

【问题讨论】:

    标签: jquery ruby sinatra


    【解决方案1】:

    将名称作为属性放在链接上

    <a href='...' data-name='John Doe'>...</a>
    

    然后在您的点击处理程序中提取属性

    $('a.delete-action').click(function(event) {
      var name = $(this).data('name')
      var prompt = "Are you sure you want to delete " + name + "?"
    
      if (confirm(prompt)) {
        return true;
      }
    
      return false;
    });
    

    【讨论】:

    • 安全性如何?需要注意的是,该站点是通过 SSL 保护的,如果不登录就无法访问。但只是为了覆盖我的基础,如果我将这些(相当敏感的)数据直接放在关联?是否可以使用 AJAX 调用(带有要在数据库中查找的 id)?还是会有点矫枉过正?
    • @UmarGhouse “敏感”是什么意思?无论如何,您都在页面上提供它。以这种方式,它并没有比你的更“暴露”。
    • 对。我没有想到。我现在觉得很傻。谢谢@Sergio Tulentsev 我会试试这个!还有一个问题,仅用于学习目的。关于改用 AJAX。这会是一个可行的选择吗?
    • @UmarGhouse 这将是一个不必要的麻烦 :) 你希望用它来完成什么(你现在不能做什么)?
    • 是的,我想你是对的。刚开始使用 AJAX,还没有解决一切都需要使用它的问题! :P 再次感谢@Sergio Tulentsev,这个解决方案就像一个魅力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2011-04-03
    相关资源
    最近更新 更多