0

カスタム 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 ヘッダーの内容と、このデータを投稿する適切な方法は何ですか?

4

1 に答える 1

1

Rails APIのドキュメントを見ると、次のような情報に出くわしました。

Railsは、クライアントから送信されたHTTPAcceptヘッダーから目的の応答形式を決定します。

jQueryの$.ajax呼び出しには、acceptsこのヘッダーの値を設定するために使用できる設定がありますが、を使用すると、dataTypeこれが自動的に構成されると思います。

于 2012-12-31T07:03:01.987 に答える