jquery - rails : how to update a has_many :through relation via jQuery?

标签 jquery ruby-on-rails ajax has-many renderpartial

抱歉,如果这是一个新手问题,但我刚刚开始使用 Rails 和 jQuery。我有以下情况:

我有 3 个类(class):contacts , companiescontact_company_joins (ccj)。 对于我创建的所有三个类 models , controllerviews 。显然,接触和 公司通过连接表 ccj 连接(使用 has_many :through )。

contacts <-> contact_company_joins <-> companies

在我的联系人的“显示” View 中,我想显示一个表格,其中列出了该联系人连接到的所有公司(以及有关公司本身的一些附加信息,例如电话号码)。在我的公司看来,我想做同样的事情,但这次是使用员工(联系人)的详细信息。 表的每一行末尾都有典型的“删除”链接,我现在已将其函数连接到我的一个 jQuery 函数:

$('.edit_contact_join_delete').livequery('click', function() {
    var $deleteButton = $(this);
    var answer = confirm("Sure?");
    var dataloc = "&_method=delete";
    if (answer) {
     $.ajax({
          type : "POST",
          url  : this.href,
          data : dataloc,
          success: function(result) {
          }
        });
    }
    return false;
  });

在两个 View (联系人和公司)中,删除操作会将我带到 ccj Controller 的销毁功能。 我现在想要做的是更新或重新呈现调用删除函数的单个站点(联系人或公司)的表,但仅限于表的一部分。我想我必须在上面的“成功”函数中实现它?但话又说回来,即使我从 ccj 的 Controller 返回一些东西(渲染的部分?)...对于联系人和公司 View 来说都是相同的,对吧? 我如何确保在我的 Ajax 调用销毁 ccj 对象之后,我会为我的联系人 View 获得一个新的 DOM 对象(这将是一个新的公司表),而且当我执行 Ajax 调用时也会获得一个新的联系人表我的公司观点?

希望这一切都有意义:-)

问候,

塞巴斯蒂安

最佳答案

您所需要的只是删除操作返回成功或失败(即使只是 true 或 false 即可),然后您的 JavaScript 就可以处理任一响应。

如果失败,则返回一条消息,表示成功,并且关系被删除,您可以找到您单击的删除链接的 父级,并使该行淡出,最终将其从页面中删除。例如(假设您的 Controller 在删除成功时返回 true,否则返回 false):

$('.edit_contact_join_delete').livequery('click', function() {
    var $deleteButton = $(this);
    var answer = confirm("Sure?");
    var dataloc = "&_method=delete";
    if (answer) {
     $.ajax({
          type : "POST",
          url  : this.href,
          data : dataloc,
          success: function(result) {
            if (result) {
              // handle successful delete
              $deleteButton.parent('tr').fadeOut().remove()
            } else {
              // handle failed delete
              alert('Delete failed');
            }
          } 
        });
    }
    return false;   
  });

关于jquery - rails : how to update a has_many :through relation via jQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260476/

相关文章:

javascript - 通过 jquery 在字段中动态更改的数据上设置事件

javascript - JQuery - 使用 Flot Charts 从 php 绘制时间序列数据

javascript - 在 MVC5 中使用 AJAX 调用

jquery - 固定表格列宽(使用 colgroup)在 IE 和 Safari 中删除列后不起作用

JavaScript 定时器函数

ruby-on-rails - 'Views' 主目录中的 ruby​​ on rails 子目录

ruby-on-rails - 在 Rails 2 中覆盖资源路由

ruby-on-rails - 格式-在选择标签中自定义空白选项

javascript - 如何销毁所有 jQuery UI 小部件?

javascript - 随机化后无法获取文件路径名