我怎么能干我的Rails/AJAX/Bootstrap 3模态错误处理

How can I DRY up my Rails/AJAX/Bootstrap 3 Modal Error Handling?

本文关键字:模态 错误 处理 Bootstrap AJAX 我的 Rails 怎么能      更新时间:2023-09-26

我的Rails应用程序中有一系列控制器,在通过Bootstrap 3 Modal输入成功提交AJAX时,它们都渲染了一个create.js.erb文件。我还按照下面的描述添加了错误处理——因此,当服务器返回一个不可处理的实体时,每个模态的错误都会在<span></span>帮助块中呈现。这一切都很完美。

我的问题是,代码似乎不是很干。我添加到应用程序的每一个新的模态(我现在是7)要求我在Jquery/AJAXerror处理(在我使用它的方式)中瞄准它-见下面的代码:

$(document).ready(function(){
  $(document).bind('ajaxError', 'form#new_person', function(event, jqxhr, settings, exception){
// note: jqxhr.responseJSON undefined, parsing responseText instead
$(event.data).render_form_errors( $.parseJSON(jqxhr.responseText) );
  });
});

相关部分为$(document).bind('ajaxError', 'form#new_person', function(event, jqxhr, settings, exception){

这是针对form#new_person,我有一个每个形式在我的应用程序。它工作得很好,但似乎非常不必要重复自己这么多,当我在每个代码块的变化是选择器。

是否有一个方法我可以添加到这个,我可以添加我的每个选择器作为一个列表,或者以某种方式告诉Jquery只触发AJAXerror调用一次?

您可以像这样使用逗号分隔组选择器:

$(document).bind('ajaxError', 'form#new_person, sel#f2, sel#f3, sel#f4',  
                                        function(event, jqxhr, settings, exception){

或创建var选择器,如:

var selectors = 'form#new_person, sel#f2, sel#f3, sel#f4';
$(document).bind('ajaxError', selectors, function(event, jqxhr, settings, exception){
//------------use it here-----^---^---^