Usando HTTP PUT para enviar JSON com Jquery e Rails 3

O HTTP PUT não é inteiramente entre navegadores; portanto, o Rails (eu estou usando o Rails 3) suporta o uso do POST e passa o_method query param. Isso é ótimo, mas parece não funcionar ao enviar JSON.

Exemplo:

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

Quando o Rails vê isso, ele não reconhece a substituição '_method' porque é passada no formato JSON (talvez essa conversão seja posterior?). O Rails retorna um erro "Nenhuma rota corresponde ...", dizendo que não pode encontrar a rota (para o recurso), presumo que não corresponda ao verbo REST update = HTTP PUT, eu até tentei anexá-lo a o URL:?_method=PUT mas obteve o mesmo resultado.

A única coisa quefaz parece funcionar está definindo um cabeçalho 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");
    }
});

A melhor maneira de definir o cabeçalho de substituição HTTP?

questionAnswers(1)

yourAnswerToTheQuestion