2011-09-05 6 views
0

사용자 프로필 페이지에 jQueryUI Datepicker가 있습니다. 사용자가 날짜 값을 텍스트 상자에 채우는 대신 날짜를 선택하면 선택한 날짜에 해당 사용자에 대한 통계를 얻기 위해 즉시 GET 요청을 보내고 싶습니다.jQueryUI Datepicker를 사용하여 특정 날짜를 기준으로 레일스 뷰를 요청하십시오.

URL은이 같은 것이다 :

/users/1?date=20110905

그리고 내 UsersControllerparams[date]을보고 적절한 날짜 기반의 데이터 모델을 조회 할 것이다.

문제가있는 부분은 자바 스크립트 부분입니다.

  1. 이 어떻게 자바 스크립트 코드 내에서 사용자 ID를받을 수 있나요 : 나는 이벤트를 잡을 후 나는 jQueryUI 날짜 선택기의 onSelect 이벤트에 연결해야하지만거야?
  2. GET 요청을 제출해야합니까? 전체 페이지 새로 고침을 원하므로 window.location을 사용해야합니까?

답변

2

당신은 location.pathname으로 URL의 경로를 얻을 수 있습니다, 당신은 당신이 페이지를 다시로드 할 URL에 location.href을 할당하여 현재 페이지를 다시로드 할 수 있습니다. 그래서, 당신은 아마 이런 식으로 뭔가를 찾고있을 것이다 :

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

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

주, location.pathname는 당신에게 URL의 경로를 제공하는 동안 location.href, 당신에게 및 해시 (GET 방식의 경우) 쿼리 문자열을 포함하여 전체 URL을 제공합니다. location 개체의 경우 the MDN documentation을 참조하십시오.

+0

내가'$을 제거 할 수 .get' 모두하고 그냥'window.location = window.location.href + "? date ="+ dateText;'? – Finch

+0

예, 가능합니다. 어쨌든 나는 실수로 AJAX를 먼저하고 싶다고 읽었습니다. 내 대답을 업데이트 할게. –

0

ERB 파일을 처리 할 때 서버에서 < %%> 태그가 먼저 처리됩니다. 그런 다음 결과가 브라우저로 전송됩니다. 그래서, 당신은 다음과 같이 자바 스크립트로 ERB 태그를 삽입 할 수 있습니다

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

을 그런 다음 인덱스 행동, 예를 들어, 리디렉션에서는 window.location을 사용할 수 있습니다

window.location = "<%= url_for :action => :index %>"; 
관련 문제