Я стараюсь разрабатывать приложения так, чтобы они были устойчивыми перед лицом несчастных случаев - либо сбоев (непреднамеренных операций, таких как нажатие в неправильном месте), либо ошибок (когнитивных ошибок, таких как нажатие кнопки «ОК» или «Отмена» в диалоговом окне). Вот несколько способов сделать это:
Это сводится к двум основным вещам: (1) программа защиты и (2) информирование пользователя как можно лучше. Если интерфейс системы прост в использовании и ведет себя в соответствии с их ожиданиями, то они с большей вероятностью узнают , какую кнопку нажимать, когда появляется раздражающее диалоговое окно.
Я также очень, очень стараюсь избегать чего-либо модального, поэтому пользователи могут игнорировать большинство диалогов, которые мне приходится использовать, хотя бы на некоторое время (и когда им действительно нужно обратить на них внимание, они достаточно информации, чтобы знать, что с этим делать).
Невозможно сделать систему полностью защищенной от ошибок, но я обнаружил, что описанные выше методы имеют большое значение в правильном направлении. (и они были включены в системы, используемые для разработки Surprise Explain Reward и других инструментов, которые были проверены обширными исследованиями пользователей.)
PUT и DELETE поддерживаются не всеми браузерами, RubyOnRails поддерживает передачу дополнительного параметра с вашими данными под названием _method , который будет указывать, как RoR будет обрабатывать запрос.
$.ajax({
type: "POST",
url: '/admin/pages/1.json',
data: { _method:'PUT', page : {...} },
dataType: 'json',
success: function(msg) {
alert( "Data Saved: " + msg );
}
});
Хорошо, на самом деле в моих данных JSON не было ключа страницы, моя ошибка. Вот почему он неправильно разбирался. Но теперь я получаю строку «[object Object]» в качестве значения для ключа страницы вместо хорошо проанализированного json-объекта.
Где мне искать: JQuery или Rails?
EDIT:
Я решил, что проблема с преобразованием json-объекта в строку с помощью скрипта, найденного здесь: www.json.org/js.html:
$.ajax({
type: "PUT",
url: '/admin/pages/1.json',
data: { page : JSON.stringify( {...} ) },
dataType: 'json',
success: function(msg) {
alert( "Data Saved: " + msg );
}
});
На стороне рельсов должен быть установлен гем json. В контроллере:
params[:page] = JSON.parse params[:page] if params[:page].is_a? String
У меня была аналогичная проблема [объект Object] с jQuery / rails, но с HTML, а не с JSON. Возможно, это поможет -
параметр [объект Object]
data: { lesson: { date: drop_date } }
параметр урок [дата]
data: { "lesson[date]": drop_date }
надеюсь, что это поможет -