rails:如何通过jQuery更新has_many:through关系?

问题描述 投票:2回答:1

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

我有3个类别:contactscompaniescontact_company_joins(ccj)。对于所有三个类,我创建了modelscontrollerviews。显然,联系人和通过联接表ccj(使用has_many :through)将公司联系起来。

contacts <-> contact_company_joins <-> companies

在我的联系人的“显示”视图中,我想显示一个表格,列出该联系人所连接的所有公司(以及公司本身的一些其他信息,例如电话号码)。在我公司看来,我想这样做,但是这次要提供员工(联系人)的详细信息。表的每一行在末尾都有一个典型的“删除”链接,我现在将其功能连接到我的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;
  });

[在两个视图(联系人和公司)中,删除操作都将我带到ccj控制器的destroy功能。我现在要做的是更新或重新呈现正在调用删除功能的单个站点(联系人或公司)的表,但仅是表的一部分。我想我必须在上面的“成功”函数中实现它?但是再说一次,即使我从ccj的控制器返回了一些东西(渲染的部分?)……对于联系人和公司视图来说都是一样的,对吗?如何确保在我的Ajax调用销毁ccj对象之后,我得到了联系人视图的新鲜DOM对象(这将是一个新的公司表),但是当我从我的公司视图?

希望这一切都说得通:-)

问候,

塞巴斯蒂安

jquery ruby-on-rails ajax has-many renderpartial
1个回答
2
投票
[如果失败,然后返回一条消息,则说明如果成功并且关系被删除,您可以找到您单击的删除链接的父级,然后淡出该行,最终将其从页面中删除。例如(假设删除成功,则控制器返回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; });

© www.soinside.com 2019 - 2024. All rights reserved.