Ruby on rails 如何让rails ajax识别某个日期已更新,并将其反映在页面上?

Ruby on rails 如何让rails ajax识别某个日期已更新,并将其反映在页面上?,ruby-on-rails,ruby,ajax,rspec,Ruby On Rails,Ruby,Ajax,Rspec,我有一个链接 %a{href: "#", :data => {verifying_link: 'yes', id: link.id, table_row: index}} verify_by_js 那叫 $(function(){ $("a[data-verifying-link]='yes'").click(function(){ // spinner here a=$(this).parent() a.html('-spinner-') var

我有一个链接

%a{href: "#", :data => {verifying_link: 'yes', id: link.id, table_row: index}}
  verify_by_js
那叫

$(function(){
  $("a[data-verifying-link]='yes'").click(function(){
    // spinner here
    a=$(this).parent()
    a.html('-spinner-')
    var id= $(this).data("id");
    var row = $(this).data("tableRow");
    $.get("/verify_link/"+id+"&table_row="+row, function(data) {
      if (data.link.verified_date !== undefined) {
       $("span#verify_link_"+row).html('<span class="done">Verified</span>');
      } else {
       $("span#verify_link_"+row).html('<span class="undone">Unverified</span>');
      }   
    }); 
    //a.html('DONE')
  }); 
});
网络选项卡显示了一个有效的
get
,用于
/verify\u link/377&table\u row=0

我觉得我没有得到的是如何
函数(数据){
如果(data.link.verified_date!==undefined
有效(建议使用另一个问题答案,以及get调用如何使用该答案)

服务器日志显示:

Started GET "/verify_link/377&table_row=0" for 127.0.0.1 at 2014-08-03 21:52:06 -0400
Processing by LinksController#verify_link as */*
  Parameters: {"id"=>"377&table_row=0"}
  User Load (0.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 LIMIT 1
  Link Load (0.4ms)  SELECT `links`.* FROM `links` WHERE `links`.`id` = 377 LIMIT 1
   (0.1ms)  BEGIN
   (0.4ms)  UPDATE `links` SET `verified_date` = '2014-08-04 01:52:06', `updated_at` = '2014-08-04 01:52:06' WHERE `links`.`id` = 377
   (0.5ms)  SELECT COUNT(*) FROM `links` WHERE (1 = 1 AND position = 347)
   (44.6ms)  COMMIT
  Rendered links/verify_link.js.erb (0.2ms)
Completed 200 OK in 347.0ms (Views: 5.3ms | ActiveRecord: 46.3ms)
这有点让人困惑,因为它引用了
app/view/links/verify_link.js.erb
,但这不是它所使用的

$ cat app/views/links/verify_link.js.erb 
<%- if @link.verified_date %>
  $("span#verify_link_<%=params['table_row']%>").html('<span class="done">Verified</span>');
<%- else %>
  $("span#verify_link_<%=params['table_row']%>").html('<span class="undone">Unverified</span>');
<%- end %>
$cat app/views/links/verify_link.js.erb
$(“span#verify_link”)html('verifyed');
$(“span#verify_link”)html('Unverified');

其中文本
Verified
Unverified
,而我让前一个文本有不同的文本-
Verified OK
Not Verified
,以确保它是在ui中使用的,并且它是(“未验证的”).

在控制器中执行此操作。因为我看不到任何正确的成功和错误返回值

def verify_link
  @link = Link.find(params[:id])
  if @link.valid_get?
    if @link.update_attribute(:verified_date, Time.now)
        render nothing: true, status: 200
     else
        render nothing: true , status: 422
     end
  end 
end
对所需的javascript文件执行此操作。并将
$.get
更改为
$.ajax
,因为
$。get
回调仅在请求成功时调用,而不是在失败时调用。间接地,这也意味着,由于DOM正在更新(其正确性不正确)由于
$.get
回调,这意味着请求成功。我正在使用
$.ajax
,因为它看起来更优雅

$(function(){
  $("a[data-verifying-link]='yes'").click(function(){
    // spinner here
    a=$(this).parent()
    a.html('-spinner-')
    var id= $(this).data("id");
    var row = $(this).data("tableRow");
    $.ajax({
      url: "/verify_link/"+id+"&table_row="+row ,
       type: 'GET',
       success: function(r) {  
                $("span#verify_link_"+row).html('<span class="done">Verified</span>');
             },
       error: function(r) {
           $("span#verify_link_"+row).html('<span class="undone">Unverified</span>');
        },
       complete: function(r) { 
         a.html('DONE');
     }

    });
  }); 
});
$(函数(){
$([数据验证链接]=“是”)。单击(函数(){
//这里是纺纱机
a=$(this.parent())
a、 html('-spinner-')
var id=$(this.data(“id”);
var行=$(this).data(“tableRow”);
$.ajax({
url:“/verify_link/”+id+“&表_行=“+行,
键入:“GET”,
成功:函数(r){
$(“span#verify(验证链接)+行).html('verifyed');
},
错误:函数(r){
$(“span#verify_link"+row).html('Unverified');
},
完成:函数(r){
a、 html('DONE');
}
});
}); 
});

回复如何?添加了服务器日志。哦,我只是说你的更新文本。我以不同的方式回答了它,但它会起作用。如果你想根据你的更新得到答案,请告诉我。我非常喜欢这种方法。唯一的问题是,我遇到的问题与js分离时相同——我总是以“未验证”结束,即使是wh嗯,记录核实无误。
$(function(){
  $("a[data-verifying-link]='yes'").click(function(){
    // spinner here
    a=$(this).parent()
    a.html('-spinner-')
    var id= $(this).data("id");
    var row = $(this).data("tableRow");
    $.ajax({
      url: "/verify_link/"+id+"&table_row="+row ,
       type: 'GET',
       success: function(r) {  
                $("span#verify_link_"+row).html('<span class="done">Verified</span>');
             },
       error: function(r) {
           $("span#verify_link_"+row).html('<span class="undone">Unverified</span>');
        },
       complete: function(r) { 
         a.html('DONE');
     }

    });
  }); 
});