2012-02-13 4 views
0

ユーザー作成の変数をサーバーで処理してから、ビューに戻してdivに追加しようとしています。Ajax、Javascript変数、サーバー側変数 -

私の見解使用ERB:

<div id = "times_div"></div> 

<script> 
function findTimes(current_time){ 
    matched_time = current_time; 
    $.ajax({ 
    type: "POST", 
    url: "match_times", 
    cache: false, 
    data: matched_time, 
    success: function(<%= @new_times %>){ 
    $("#times_div").append(<%= @new_times %>); 
} 
}); 
}; 
</script> 

私のコントローラ:

def match_times 
    reduce = Schedule.where(:date => matched_time) 
    hour_on_time = reduce.collect {|x| x.hour} 
    @new_times = hour_on_time 
end 

と私のルート:

match '/match_times', :to => 'appointments#match_times' 

が、私は「未定義のローカル変数やメソッドを取得しています ` matched_time 'コントローラがAjax経由で送信された 'data'プロパティを読み取っていないのはなぜですか?あなたがjQuery ajaxを使用している場合

おかげ

+0

'findTimes'を呼び出すコードを追加できますか? – osahyoun

+0

どこにそのエラーがありますか?アヤックスを提出した後、または前に? –

+0

それはajaxが提出された後に起こった。私はコントローラの値になるように、 'matched_time'のparamsキーを宣言する必要がありました。 – EHNole

答えて

2

あなたは、あなたがparams[:matched_time]を使用してコントローラのパラメータを評価することができます

$ajax({.., 
    data: "matched_time="+matched_time, 
    ..}); 

のようなものを渡す必要があります。文字列の代わりにJavascriptオブジェクトを使用することもできます

$ajax({.., 
    data: {matched_time : matched_time}, 
    ..}); 
+0

ありがとう、これは働いた。 – EHNole

関連する問題