rails:如何通过jQuery通过关系更新has\u many?

rails:如何通过jQuery通过关系更新has\u many?,jquery,ruby-on-rails,ajax,has-many,renderpartial,Jquery,Ruby On Rails,Ajax,Has Many,Renderpartial,很抱歉,如果这是一个noobish问题,我只是开始学习Rails和jQuery。我有以下情况: 我有三门课:联系人,公司和联系人(公司)(ccj)。 对于我创建的所有三个类模型,控制器和视图。显然,接触和 公司通过联接表ccj连接(使用有许多:通过) 联系人联系公司加入公司 在我的联系人的“显示”视图中,我想显示一个表格,列出联系人所连接的所有公司(以及公司本身的一些附加信息,例如电话号码)。在我的公司看来,我也想这样做,但这次是关于员工(联系人)的详细信息。 表的每一行末尾都有一个典型的“de

很抱歉,如果这是一个noobish问题,我只是开始学习Rails和jQuery。我有以下情况:

我有三门课:
联系人
公司
联系人(公司)
(ccj)。 对于我创建的所有三个类
模型
控制器
视图
。显然,接触和 公司通过联接表ccj连接(使用
有许多:通过

联系人联系公司加入公司

在我的联系人的“显示”视图中,我想显示一个表格,列出联系人所连接的所有公司(以及公司本身的一些附加信息,例如电话号码)。在我的公司看来,我也想这样做,但这次是关于员工(联系人)的详细信息。 表的每一行末尾都有一个典型的“delete”链接,我现在已经将它的函数连接到我的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控制器的销毁功能。 我现在要做的是更新或重新提交调用delete函数的单个站点(联系人或公司)的表,但只更新表的一部分。我想我必须在上面的“成功”函数中实现它?但话说回来,即使我从ccj的控制器返回了一些东西(渲染的部分?)…联系人和公司视图都是一样的,对吗? 我如何确保在Ajax调用销毁ccj对象后,我为联系人视图(这将是一个新的公司表)获得一个新的DOM对象,但在我从公司视图进行Ajax调用时,我还可以获得一个新的联系人表

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

问候,


Sebastian

您所需要的只是让delete操作返回成功或失败(即使只有true或false也可以),然后您的javascript可以处理这两种响应

如果失败,然后返回一条消息,说明是这样的,如果成功并删除了关系,您可以找到您单击的删除链接的父项,并淡出该行,最终将其从页面中删除。例如(假设控制器在删除成功时返回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;   
  });