如何在执行ajax调用时调试rails

时间:2016-01-25 08:02:37

标签: jquery ruby-on-rails ajax

所以,通常,rails错误并给我一个很好的错误页面来读取。还有一个可以调试的控制台。

但是,当做这样的ajax调用时:

  $('.the-button').mousedown(function(ev) {
      var returned_stand_id = 1
        $.ajax({url: "/stands/create", type: "POST", contentType: "application/json", dataType: "json",
                data: '{"the_name": "' + returned_stand_id +  '"}',
            success: function(data){
              returned_the_id = data.the.id;
              window.location = '/s/' + returned_the_id;
            }
        });

    });

我在控制台上遇到Chrome错误:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

我的问题不是这个例子中的问题。

我的问题是如何在测试/调试ajax调用时显示有用的rails错误消息。

编辑1: 我补充说:

 ...
          window.location = '/s/' + returned_the_id;
        }
        error: function(jqXHR, textStatus, errorThrown ){
          console.log("jqXHR = "+JSON.stringify(jqXHR));
          console.log("textStatus = "+JSON.stringify(textStatus));
          console.log("errorThrown = "+JSON.stringify(errorThrown));
        }
 ...

但是,这只是导致JS无法加载错误:

Uncaught SyntaxError: Unexpected identifier

此错误专门针对:error: function(jqXHR, textStatus, errorThrown ){

1 个答案:

答案 0 :(得分:1)

正如@Sergio所说,请查看rails日志以获取错误的详细信息。但是,要回答您的问题,您可以通过向ajax调用选项添加error块来输出有关javascript代码中错误的更多信息。

$('.the-button').mousedown(function(ev) {
    var returned_stand_id = 1
      $.ajax({
          url: "/stands/create", type: "POST", contentType: "application/json", dataType: "json",
          data: '{"the_name": "' + returned_stand_id +  '"}',
          success: function(data){
            returned_the_id = data.the.id;
            window.location = '/s/' + returned_the_id;
          },
          error: function(jqXHR, textStatus, errorThrown ){
            console.log("jqXHR = "+JSON.stringify(jqXHR));
            console.log("textStatus = "+JSON.stringify(textStatus));
            console.log("errorThrown = "+JSON.stringify(errorThrown));
          }              
      });

  });

它可能会显示rails stack trace。