2011-09-05 24 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 %>";