カスタム ajax フォームを作成したい (Rails のすぐに使えるソリューションを使用することに興味がない):
$('form.ajaxForm').submit(function(e){
e.preventDefault();
var $form = $(this),
formValues = getFormValues($form),
formUrl = $form.attr('action');
$.post(formUrl, {
data : formValues,
contentType: "application/json",
success : function(data, textStatus, jqXHR){
// do success here
}
});
});
var getFormValues = function($form){
var values = {};
var valuesArray = $form.serializeArray();
for(var i = 0, max = valuesArray.length; i < max; i++){
var value = valuesArray[i];
values[value.name] = value.value
};
return values;
};
Rails 3 の機能を使用して、次のような json リクエストを受け取ったときに別の方法で応答したいと考えています。
def create
@registration = Registration.new(params[:registration])
respond_to do |format|
format.html { render action: "new" }
format.json { render json: @registration.errors, status: :unprocessable_entity }
end
end
何らかの理由で、投稿中に Rails が私のリクエストを処理できず、json に応答しません。json に応答するように指示する http ヘッダーの内容と、このデータを投稿する適切な方法は何ですか?