ruby-on-rails - 如何让rails在数据库更新后使用ajax更新HTML表行?

标签 ruby-on-rails ruby ruby-on-rails-3

我有一个包含多行的目录。
对于任何给定的行,我希望能够验证记录,并通过将“验证链接”超链接更改为纯文本“已验证”,将其立即反射(reflect)在屏幕上。
对于其他人来说似乎是相当常见的模式。

我有以下标记:

...# (table stuff).
 = link_to 'verify', verify_link_path(:id => link.id),  class: 'verify', remote: true

这(成功)调用链接 Controller “verify_link”方法:

def verify_link
  @link = Link.find(params[:id])
  # Ignore additional verify logic for now, just set as verified (when the user clicks verify).
  @link.verified_date = Time.now
  @link.save!
  respond_to do |format|
    format.js
  end 
end

我知道这有效...因为数据库会更新。

最后我想更新页面(表格行单元格)以反射(reflect)这一点。 这就是我被困住的地方。

Controller 方法成功调用以下app/views/links/verify_links.js.erb文件:

$(function() {
$(".verify")
  .bind("ajax:success",function(event,data,status,xhr) {
    this.text='verified';
    alert("The link was verified.");
  });
});

我知道它会被调用...因为我可以将 alert("hello world"); 放在开头,它会显示为弹出窗口。

不起作用的部分是将“验证”链接替换为纯文本“已验证”。 实际上我什至根本无法在那里工作alert。 用户界面中没有任何内容更新。然而,在后端,数据库中发生了更改,因此,如果我刷新页面,我确实会看到此时反射(reflect)的更改)。

注释:

  • 存在多个链接是否存在问题?即,我是否应该使用一个 id,我必须从表行 id 或数字中获取该 id
  • 应用程序版本是带有 Assets 管道的rails 3.2.17。
  • 应用最初是用 Rails 2 编写的,后来进行了升级。
  • 我正在使用 jquery 1.7.2 和rails.js,但最初避免使用 Angular、ember 等框架,因为我想先了解更多较低级别的内容。一旦我这样做了,我就会使用一个框架。

最佳答案

@hjing 是对的。 app/views/links/verify_links.js.erb 中的代码已经是对 ajax 的响应。您不需要将其绑定(bind)到 ajax:success。

正如您所建议的,您需要为每个链接创建一个 id,您必须从表行 id 或编号中获取该 id。例如,对于您来说,您的链接将如下所示:

= link_to 'verify', verify_link_path(:id => link.id),  class: 'verify', id: "verify_#{table_row_no}", remote: true 

然后在您的app/views/links/verify_links.js.erb中,您可以像这样定位该特定链接:

$("#<%= j 'verify_#{table_row_no}' %>").text("verified");
$("#<%= j 'verify_#{table_row_no}' %>").prop("href","#"); #you would also want to change the href in case someone clicks it again

关于ruby-on-rails - 如何让rails在数据库更新后使用ajax更新HTML表行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970739/

相关文章:

ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载

javascript - 如何在 RubyRacer 中评估 HTML DOM 对象(如 "document")

ruby-on-rails - 具有并属于许多错误 - *_development.hunts_tasks' 不存在 :

ruby-on-rails - 与 Rails 中 FactoryBot 的关联 : Validation Failed

ruby - 简单的单行将行与常见的第一个字段合并

ruby - 如何将 Ruby Sequel 日志记录设置为 DEBUG 级别?

ruby-on-rails - rails 4 : Group by Month

ruby-on-rails - Ruby/Rails 语法

ruby-on-rails - 如何按属性长度对 ActiveRecords 列表进行排序?

ruby - 在 Ruby on Rails 中,将 rake 任务和测试文件的辅助函数放在哪里?