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

对不起,如果这是一个noobish问题,但我刚刚开始使用Rails和jQuery。 我有以下情况:

我有3个类:联系人,公司和contact_company_joins(ccj)。 对于所有三个类,我创建了模型,控制器和视图。 显然,联系人和公司通过join-table ccj连接(使用has_many:through)。

联系人 contact_company_joins 公司

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

希望这一切都有道理:-)

问候,

塞巴斯蒂安

您只需要删除操作即可返回成功或失败(即使只是真或假),然后您的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; });