У меня проблема:Лучший способ отображения сообщений об ошибках вызова ajax?
У меня есть текстовое поле, в котором я принимаю значение текстового поля при нажатии кнопки ввода, и я хочу поймать ошибку, что имя отсутствует. поэтому я добавил это в моей модели:
validates :name, presence: true
В мой контроллер я только изменил то, что должно произойти, если сохранить его удастся:
def create
@role = Role.new(role_params)
respond_to do |format|
if @role.save
format.js { render :created }
else
format.json { render json: @role.errors, status: :unprocessable_entity }
end
end
end
и мой файл JavaScript имеет эту функцию:
$(function(){
$("body").on("keyup", "#role_name", function(e){
if (e.which == 13) {
role_name = $("#role_name").val();
$.ajax({
type: "POST",
dataType: "script",
url: '/roles',
data: {role: {name: role_name} },
success: function(){
$("#role_name").val("");
$("#alert-new-role").replaceWith("<div id='alert-new-role' class='alert alert-success col-xs-10 col-xs-offset-1'><strong>role created!</strong></div>");
}
}).fail(function(){
$("#alert-new-role").replaceWith("<div id='alert-new-role' class='alert alert-danger col-xs-10 col-xs-offset-1'><strong>name can't be empty!</strong></div>");
});
}
});
})
Это действительно работает, но мои сообщения об ошибках жестко запрограммированы. Должен ли я когда-либо добавить второе правило проверки, я не могу сказать, что именно вызвало ошибку.
Firebug показывает мне JSON, который был создан контроллером, но каким-то образом я не могу получить к нему доступ в функции .fail из jQuery.
Я проверил все 4 параметра, но ни одно из них не содержит мое сообщение об ошибке.
Я нашел несколько примеров, как это должно быть сделано, но каким-то образом я не могу воспроизвести его.
Если я могу получить доступ к JSON, это также будет идея сделать частичное в рельсах и передать его обратно в функцию .fail.
The * лучший способ * может зависеть о том, как вы были tau ght, это может быть классифицировано как самоуверенное. – Script47
Вы правы, я буду иметь это в виду в следующий раз. Спасибо. Надеюсь, теперь я буду писать правильно. – Elux91