Как показать ошибки сервера в направляющих 2.3.5 с JSON и jQuery

У меня есть оперативное редактирование на странице в моем приложении (использующий направляющие 2.3.5 и jQuery). Я хочу знать, как отобразить ошибку на странице, когда обновление перестало работать.

Я использую ajax (XMLHttpRequest) для сохранения обновления объекта Комментария. Контроллер имеет метод обновления как это:

def update
  @comment = Comment.find(params[:id])
  respond_to do |format|
    # if @comment.update_attributes!(params[:comment])
    if false #deliberately forcing a fail here to see what happens
      format.json { render :nothing =>  true }
    else
      format.json { render :json => @comment.errors, :status => :unprocessable_entity }
    end
  end
end

В Firebug я вижу, что сервер возвращается "422" (соответствующий код состояния ошибки проверки). Но это - ответ на XMLHttpRequest, таким образом, нет никакого перенаправления к ошибочной странице.

Я думаю, что на самом деле хочу сделать это:

format.json { render :json => @comment.errors}

или возможно это:

format.json {render :json => { :status => :error, :message => "Could not be saved" }.to_json, :status => 400 }

и инициируйте некоторую функцию JavaScript, которая выполняет итерации через (и дисплеи) любые ошибки.

Я использую плагин направляющих REST на месте для реализации оперативного редактирования. Это, кажется, не имеет функции обратного вызова для обработки отказа. Каковы мои опции? Я могу записать некоторый JavaScript для ответа на состояние отказа, не взламывая плагин? Я должен взломать rest_in_place плагин для обработки состояния отказа? Существует ли лучший плагин (для направляющих или jQuery), который обрабатывает оперативное редактирование, включая состояние отказа?

ОБНОВЛЕНИЕ

Это сообщение от Peter Bui Standard, Ответ JSON для направляющих и jQuery был полезен в показе, как обработать сообщение об ошибке от использования сервера XMLHttpRequest.status. Я посмотрел на его реализацию блога с помощью ajax paydro-переговоры. Я удивлен сложностью, требуемой обработать простое состояние ошибки. Обычно направляющие имеют все совершенство, испеченное в, но кажется, что ошибки сервера с JSON вне объема. Это может быть?

Я также посмотрел на validatious на направляющих grimen, который размещает проверки моделей, когда ajax XMLHttpRequest используется. Мне не ясно, как я использовал бы его для обработки общего случая сбоя "сохранения", когда проверки успешно выполняются.

8
задан Guillaume 13 July 2012 в 16:52
поделиться

1 ответ

Я думаю, что лучшим вариантом будет просто взломать плагин в этом случае, так как это действительно глупо, что плагин не имеет обработчика ошибок в любом случае. подсказка: возможно, скажите автору плагина, что было бы хорошо и полезно обрабатывать ошибки (что если соединение не работает или что-то еще?? плагин никогда не узнает, и нет обратной связи для пользователя).

Этого должно быть достаточно, если вы добавите что-то вроде этого около строки 33 в jquery.rest_in_place.js после опции success

"error": function(xhr, state, error) {
  //do error handling here e.g.
  alert(state);
  //or $.parseJSON(xhr.responseText) and whatever or similar
}
1
ответ дан 6 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: