2011-09-05 93 views
0

我在用户的个人资料页面上有一个jQueryUI Datepicker。当用户选择一个日期,而不是用日期值填充文本框时,我想立即发送一个GET请求来获取该用户在所选日期的统计信息。使用jQueryUI Datepicker根据特定日期请求Rails视图

的URL会是这样的:

/users/1?date=20110905

然后我UsersController会看params[date]和查询相应的基于日期的数据模型。

我遇到麻烦的部分是JavaScript部分。我需要挂接到jQueryUI的日期选择器的onSelect事件,但之后我抓住了事件:

  1. 如何从JavaScript代码中获取用户ID?
  2. 我该如何提交GET请求?我想要整页重新加载,所以我应该使用window.location

回答

2

你可以得到URL的路径与location.pathname,并且可以通过指定location.href到要重新载入页面的URL刷新当前页面。所以,你可能会被看是这样的:

$('#datepicker').datepicker({ 
    onSelect: function(dateText, inst) { 
     // location.pathname == '/users/1' 
     var userId = location.pathname.split('/')[2]; 
     var dateText = ... 

     location = location.href + "?date=" + dateText;; 
    } 
}); 

注意,location.href为您提供了完整的网址,包括查询字符串(对GET方法)和散列,而location.pathname只给你网址的路径。对于location对象,请参阅the MDN documentation

+0

我能删除'$ .get'完全只是做'window.location = window.location.href +“?date =”+ dateText;'? – Finch

+0

是的,你可以。不知何故,我错误地读了你想先做AJAX。我会更新我的答案。 –

0

处理ERB文件时,首先在服务器上处理<%%>标记。然后,结果被发送到浏览器。所以,你可以注入ERB标签到你的JavaScript,像这样:

var user_id = <%= user.id %>; 

然后,您可以使用window.location的重定向,例如指数动作:

window.location = "<%= url_for :action => :index %>";