3

我正在使用 Ruby on Rails 3.2.2 和 jQuery-Rails 2.0.2 gem(包括 jQuery UI)。当我单击前端内容中的“新评论”链接时,我有一个打开的jQuery UI 对话框窗口。当对话框窗口打开时,它会向我的控制器操作执行 AJAX HTTP 请求,使其使用 HTML 表单呈现和“填充”模态窗口正文内容。

我想实现我的观点,以便在表单成功提交后前端内容更改为:触发链接文本更改表单“新评论”为“编辑评论”。

我怎样才能做到这一点?你有什么建议?


注意:表单通过执行 AJAX HTTP 请求依次提交。

4

1 回答 1

0

这完全取决于您如何将该表单提交到服务器。

如果您提交的表单设置了:remote => true属性,它将通过 AJAX 调用发送到服务器,服务器将能够将其与常规的非 ajax 表单请求区分开来:

respond_to do |format|
  format.js  #this renders the <actionname>.js.erb file and executes it on the client
end

jquery_ujs 助手然后将执行服务器返回给他的javascript 代码。

您可以在<actionname>.js.erb文件中编写任意 JavaScript 代码,如下所示:

$('#trigger_link').text('edit comment');

如果您不使用远程表单而是进行正常$.ajax调用,您可以简单地挂钩到successjQuery 提供的回调,但我想这很明显。

更新:

似乎问题在于您不知道哪个链接触发了对话框的打开。

通常在某个地方你有一个 jQuery 函数可以为你打开对话框。在呈现包含触发链接的初始列表时,我假设您有某种方法可以将它们与页面上的其他链接区分开来(可能通过类似的 css 类.trigger)。

然后你可以这样做:

$('.trigger').click(function() {
  window.trigger_link = this;
});

请注意,上面的这个小片段不会覆盖您现有的打开弹出窗口的单击事件处理程序。它也被执行。

因此,现在我们跟踪打开窗口的链接(单击触发链接时打开窗口 - 我们始终保存最后点击的触发链接),一旦提交表单,我们可以执行以下操作:

$(window.trigger_link).text('edit comment');

由于 window.trigger_link 指的是正确的链接。

于 2012-09-12T13:20:01.810 回答