将javascript日期变量传递给rails控制器

时间:2012-10-30 07:12:46

标签: jquery ruby-on-rails-3.1 fullcalendar

我有一个应用程序,其中实现了jquery fullcalendar。在一天点击我需要将所选日期作为参数传递给rails控制器。当我在dayclick函数中提醒日期时,我将以“Tue Oct 30 2012 12:40:20 GMT + 0530(IST)”的格式获取日期。但是当我在jquery ajax中将params传递给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);
  }
}

1 个答案:

答案 0 :(得分:0)

尝试使用手动构建的url字符串进行$ .get调用:

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

所以这样的一个例子就是:

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

这会将请求路由到“posts”控制器和“increment_view_count”操作。

执行此操作时需要记住以下几点:

  1. 您需要确保在routes.rb文件中有一条路由,其中​​包含匹配的http verbage(get,post等),以允许javascript访问控制器操作。

  2. 您必须确保控制器操作将响应javascript请求。默认情况下,控制器不会执行此操作,因此您可以通过执行以下操作使控制器中的所有操作都可以访问javascript请求:

    respond_to :html, :js
    
  3. 位于控制器的顶部。或者在方法中创建一个respond_to块,如下所示:

    def index
     @people = Person.find(:all)
    
     respond_to do |format|
      format.html
      format.js
     end
    end
    

    我也使用“$ .getScript”代替“$ .get”,这可能是你想看的其他内容。