2012-01-21 5 views
0

RailsアプリにCarモデルとOrderモデルがあるとします。 Carモデルには名前と色のフィールドがあります。 Orderモデルにはcar_idフィールドと色フィールドがあり、必要に応じてユーザーが別の色を指定できるようになっています。jsonリクエストからRailフィールドを動的に更新する方法は?

ユーザーが新しい注文を作成すると、選択フィールドから自動車名を選択できます。このイベントの色でテキストフィールドを動的に更新するにはどうすればいいですか?

注文フォームは、カーショービューが

def show 
    respond_to do |format| 
     format.json { render :json => @car.to_json, :status => 200 } 
    end 
end 

をJSONに応答フィールド

<select id="order_car_id></select> 
<input id="order_color"></input> 

が含まれており、この機能は、イベントに応答し、JSON配列をつかみます。

$(function(){ 
    $('#order_car_id').live("change", function(e) { 
    e.preventDefault(); 
     $.ajax({ 
     url: "/cars/" + $(this).val(), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function(data) { 
      $('#order_color').val(car[0].color); 
     }, 
     error: function(xhr,exception,status) { 
      //error functions... 
     } 
     }); 
    }); 
}); 

が、私は

Uncaught ReferenceError: car is not defined 

#order_colorフィールドにJSON配列から値を渡すための正しい構文は何ですか

を取得していますか?私は $('#order_color').val(car[0].color);の様々な順列を試みたが、それを把握しているようではない。

誰かが正しい方向で私を指摘し、これがどのように機能するかを知ることができて感謝します。

ありがとうございました!

+0

:あなたは、データオブジェクトのフォーマットを知ったら

data:{ car:{ color:"blue" size:"large" } } 

は、あなたがしてアクセスすることができます:あなたはおそらくバックのようなものを得るでしょう

function(data) { console.log(data); //$('#order_color').val(car[0].color); } 

通常のアップデートと新しいAJAXメソッドから取得します。何か違うことはありますか? –

答えて

1

あなたの成功の機能のように見えますが、あなたは車が何であるかを定義していません。

あなたの関数は 'data'を渡していますが、 'car'はその関数のどこにも定義されていません。

データオブジェクトから車を抽出する必要があります。

まず、成功関数にconsole.log(data)を追加して、データ応答の構造を確認します。パラメータを見てみましょう

$('#order_color').val(data.car.color); 
+0

ありがとう@redronin、それはそれを修正! –

関連する問題