1

日付ピッカーを使用する登録モデルとフォームがあります。ユーザーがイベントに対応する日付のみを選択できるようにしたい (別のモデル)。

私の問題は、イベント配列を JavaScript に渡す正しい方法が見つからないことです。

これはコントローラーにあります:

@available_dates = Event.pluck(:start_time).as_json

これはビューにあります:

    <script>
       var availableDates = [<%= @available_dates.to_s.html_safe %>] ;
    </script>

これはjsです:

function available(date) {
    ymd = date.getFullYear() + "-" + ('0' + (date.getMonth()+1)).slice(-2) + "-" + ('0' + date.getDate()).slice(-2);
    console.log(ymd+' : '+($.inArray(ymd, availableDates)));
    if ($.inArray(ymd, availableDates) != -1) {
        return [true, "","Available"];
    } else {
        return [false,"","unAvailable"];
    }
}
$("#registration_date").datepicker({ beforeShowDay: available, dateFormat: "yy-mm-dd"});

コンソールを見るとjs配列が空に見えるので、ビューで何か間違っていると思います...

どんな助けでも大歓迎です

4

1 に答える 1

0

質問のコメントで、@available_dates.to_s返品について言及し"[\"2013-01-05\", \"2013-02-02\", \"2013-03-02\"]"ました。これ自体がページ上に配列をレンダリングするため、再度「ボックス化」する必要はありません。

次の行を変更してみてください。

var availableDates = [<%= @available_dates.to_s.html_safe %>] ;

これに:

var availableDates = <%= @available_dates.to_s.html_safe %>;

それが役に立てば幸い。

そうでない場合は@available_dates、コード内のどこかの値をクリアしているか@available_dates、ビューのコンテキストで使用できません。を使用してコードをステップ実行してみましたdebugger;か?

于 2012-12-31T11:35:33.463 に答える