【问题标题】:Rails 4: Can't bind Ajax Error event to form in embedded ruby / javascript (js.erb)Rails 4:无法将 Ajax 错误事件绑定到嵌入式 ruby​​ / javascript (js.erb) 中
【发布时间】:2015-08-12 16:13:30
【问题描述】:

我正在尝试向用户显示一条错误消息,指出如果出现问题,预订将无法取消。

成功时,ajax 使用 remote: true 拦截正常的表单行为并呈现部分(顺便在现有的部分内),但我无法将 'ajax:error' 事件绑定到我的 js.erb 文件中的表单。

我尝试了很多不同的东西和语法变化来尝试让它工作。 (我对 javascript/jQuery 很陌生,所以它可能是基本的东西,因为 js.erb 不会在控制台中显示错误)。这是我最近的尝试:

cancel_success.js.erb:

$('#cancel-message').html("<%= j (render 'cancel_success') %>");
$('#cancel-message').slideDown(350);
$('#search-show-container').hide()

$('#reservationId').closest('form').on('ajax:error', function(xhr, status, error) {
  $("#cancel_error_text").html("Sorry, we can't cancel your booking at the moment, please try calling the restaurant:");
});

我的表单视图:

<p id="cancel_error_text"></p>

<div id="search-show-container">

<%= form_tag(cancel_success_searches_path, remote: true) do %>
    <%#= label_tag 'Reservation ID' %>
    <%= text_field_tag :reservationId %>   
    <%= submit_tag 'Cancel Booking', name: nil %>
    <% end %>
</div>

【问题讨论】:

标签: jquery ruby-on-rails ajax erb


【解决方案1】:

好的,这可能不是您正在寻找的完整的badass 答案。但我想试着让你开始。

我认为您需要切换 ajax:successajax:error 代码的放置位置。现在你已经在你的cancel_success.js.erb 文件中得到了它,它在你的控制器操作之后运行。我认为您需要将该代码放在以下文件中:app/assets/javascripts/cancel_success.js

$(document).ready(function() {
  $('#reservationId').closest('form').on('ajax:error', function(xhr, status, error) {
    $("#cancel_error_text").html("Sorry, we can't cancel your booking at the moment, please try calling the restaurant:");
  });
});

更多信息here

【讨论】:

  • 强制代码失败了这么久,现在又发现了一个新的bug,根本无法让表单工作! (在它之前工作之后!)
  • 在控制台中正确返回: $('#reservationId').val() "35727488" 这是对 API 的有效请求所必需的,但每次都会抛出 500 错误。抱歉,这里的活动部件可能太多
  • 这对您有帮助吗? stackoverflow.com/questions/9305890/…
  • 现在该位工作了,因为它是 API 方面的问题。很快就会让你知道我如何处理你的解决方案,需要一个新的想法!
  • 嗨@thedanotto,感谢您的代码sn-p,只是尝试运行它并没有工作,与以前一样缺乏结果。根据我的经验,如果您将表单设置为 remote: true,其他相关的、单独的、常规的 javascript 文件将不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多