0

がありdatepicker、Movementsテーブルのクエリで選択した日付を使用して、対応する売上高を取得したいと思います。しかし、「currentDate」はロードされませんpicked date:「無効な日付」例外がキャッチされました。どうすればいいですか?

$("#datepicker").change(function(){
        var currentDate = $( "#datepicker" ).datepicker( "getDate" );
        var wantedTO = <%=Movement.where(:movementDate =>Date.parse("currentDate")).sum("turnover")%>;  
        $(document).ajaxComplete(function(){ $("#result").html("<p>Result here : </p>" + wantedTO);     
        });             
    }); 

交換する場合は注意してください

var wantedTO = <%=Movement.where(:movementDate =>Date.parse("currentDate")).sum("turnover")%>;  

var wantedTO = <%=Movement.where(:movementDate =>Date.today).sum("turnover")%>; 

それは私に今日の売上高を与えています。だから私は今のところ遠くないかもしれません!

編集:日付形式を確認するために、行を追加しました

 var dateString = $.datepicker.formatDate("yy-mm-dd", currentDate);

そして、手動の日付をその形式で入力すると、機能することを確認しました。この変数を渡す方法の問題のようですが、修正できません。何か案が ?

4

1 に答える 1

0

OK私は答えがあります。他の初心者が同じ問題に直面する場合に備えて、私はそれを要約します。私のコードには大きな間違いがありました。Ajaxコード内でルビークエリを実行することはできません。だから、あなたはしなければなりません:

1-コントローラー(movements_controller.rb)に新しいメソッド(ソート)を作成します:

def sort
    selected_date = params[:date]
    new_html_to_return = Movement.where(:movementDate =>Date.parse(params[:date])).sum("turnover")
    render :text => new_html_to_return
end

2-ビューにPOSTajax関数を作成します(index.html.erb):

<script>
$(document).ready(function(){
var $datepicker = $("#datepicker"),
    currentDate = new Date(),
    dateString = "";

$datepicker.change(function(){
    currentDate = $datepicker.datepicker( "getDate" );
    dateString = $.datepicker.formatDate("yy-mm-dd", currentDate);  
    $.ajax({
        type: "POST",
        // You're sending the variable to your Ruby on Rails controller
        url: "movements/sort/",
        data: {"date":dateString},
        }).done(function(data) {
                $("#result").html("<p>Turnover: </p>" + data)
        });                         
    }); 
});
</script>

3-routes.rbに関連するルートを作成します。

  post "movements/sort" 

そして、あなたは完了です!楽しみ !

于 2013-02-27T17:02:37.217 に答える