1

jquery fullcalendar が実装されているアプリケーションがあります。日をクリックすると、選択した日付をパラメーターとしてレールコントローラーに渡す必要があります。dayclick 関数内の日付を警告すると、「Tue Oct 30 2012 12:40:20 GMT+0530 (IST)」の形式で日付が取得されます。しかし、jquery ajax でパラメーターとして Rails コントローラーに渡すと、空白のままです。Railsコントローラーで正常に取得するにはどうすればよいですか。以下のdayclickの私のコードを見つけてください。

dayClick: function(date, allDay, jsEvent, view) {
  var date = $('#calendar').fullCalendar('getDate');
  alert(date);
  $.get("<%=update_projects_admins_users_path%>",
    {
      id:'<%=params[:user]%>',
      date_selected: date
    },
    function(data) {
      $('.active_projects').html(data);
      //alert("Data: " + data + "\nStatus: " + status);
    }
  );
  if (allDay) {
    alert('Clicked on the entire day: ' + date);
  }
}
4

1 に答える 1

0

手動で作成した URL 文字列を使用して $.get 呼び出しを実行してみてください。

 $.getScript("/controller/action/params")

したがって、この例は次のようになります。

  $.getScript("/posts/increment_view_count.js?id="+id)

これにより、リクエストが「posts」コントローラーと「increment_view_count」アクションにルーティングされます。

これを実装するときは、いくつかのことを覚えておく必要があります。

  1. javascript がコントローラー アクションにアクセスできるように、一致する http 動詞 (get、post など) を含む routes.rb ファイルにルートがあることを確認する必要があります。

  2. コントローラー アクションが JavaScript 要求に応答することを確認する必要があります。デフォルトでは、コントローラーはこれを行わないため、コントローラー内のすべてのアクションを JavaScript リクエストにアクセスできるようにするには、次のようにします。

    respond_to :html, :js
    

コントローラーの上部にあります。または、次のようにメソッド内に Respond_to ブロックを作成します。

def index
 @people = Person.find(:all)

 respond_to do |format|
  format.html
  format.js
 end
end

また、"$.get" の代わりに "$.getScript" を使用しています。これは、別の方法で確認する必要があるかもしれません。

于 2012-10-30T08:37:38.670 に答える