Использование HTTP PUT для отправки JSON с Jquery и Rails 3

HTTP PUT не является полностью кросс-браузерным, поэтому Rails (я использую Rails 3) поддерживает использование POST и передачу_method параметр запроса. Это здорово, но, похоже, не работает при отправке JSON.

Пример:

$.ajax({
    url: window.location.pathname,
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({_method:'PUT', page:{my_data: 1}),
    dataType: 'json'
});

Когда Rails видит это, он не распознает переопределение '_method', потому что оно передается в формате JSON (возможно, это преобразование будет позже?). Rails возвращает ошибку «Нет подходящих маршрутов ...», говоря, что он не может найти маршрут (к ресурсу), я полагаю, потому что он не соответствует глаголу REST update = HTTP PUT, я даже пытался добавить это к URL:?_method=PUT но получил тот же результат.

Единственное чтоделает Кажется, работает установка HTTP-заголовка:

$.ajax({
    url: window.location.pathname,
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({my_data: 1}),
    dataType: 'json',
    beforeSend: function(xhr){
        xhr.setRequestHeader("X-Http-Method-Override","put");
    }
});

Является ли установка заголовка переопределения HTTP лучшим способом?

Ответы на вопрос(1)

Ваш ответ на вопрос