2013-11-04 2 views
1

이벤트 페이지에 날짜와 시간이 표시됩니다. 로그인 한 회원의 경우 선호하는 표준 시간대를 가져올 수 있습니다. 하지만 로그인하지 않은 사용자의 경우 먼저 랩톱 시간대를 감지하여 해당 페이지를 현지 시간대로 표시하고 싶습니다.
나는 application.html.erb에서 jQuery를 사용
모든 데이터로드 전의 시간대를 감지하십시오.

<% if session[:time_zone].blank? %> 
    <script type="text/javascript"> 
     jQuery.ajax({ 
      data: {user_time_zone: $().get_timezone()}, 
      type: 'post', 
      url: "/set_time_zone_session" 
     }) 
    </script> 

질문 : 처음에, 페이지가 기본 시간대를 보여줍니다 있도록 그것은 지난 jQuery를 실행합니다. 페이지를 새로 고친 후 모든 하위 시퀀스 요청 시간대가 올바르게 설정됩니다. 게다가 자바 스크립트로 첫 번째 요청 후 페이지를 다시로드하십시오. 더 좋은 방법이 있습니까?

엑스트라 : 페이지를 새로 고침해야하는 경우. 나는 location.reload()를 추가한다. jQuery 호출 후. 재로드는 첫 번째 요청이 완료된 후에 발생합니다. 첫 번째 요청이로드되기 전에 페이지를 바로 새로 고치는 방법이 있습니까? 그렇지 않으면 페이지가 두 번로드되는 것이 이상하게 들릴 것입니다.

+0

javascript 함수 getTimezoneOffset을 살펴보십시오. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/ getTimezoneOffset – Archer

답변

0

클라이언트의 시간대가있는 쿠키를 설정하고 쿠키를 설정하고 페이지를 다시로드하는 것이 좋습니다. 그건 당신의 레일 애플 리케이션을 간단하게 유지합니다.

(추신 : HTTP 요청. 당신의 rubyonrails 출력, 모든 아약스에 대한 필요를 생성 할 때 당신이 사용할 수 있습니다. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.18 을 클라이언트 날짜 + 시간을 제공하는 "날짜"헤더를 포함 할 수 있지만 일반적인 경우가 될 것이다 클라이언트가 날짜 헤더를 보내지 않음).

관련 문제