2017-12-26 41 views
1

데이터베이스에 UTC로 created_at 필드가있는 레코드가 있습니다. 사용자 시간대의 시간으로 active_admin 테이블에이를 표시해야합니다. 예를 들어 : DB에 페이지에 2017년 12월 25일 15시 52분 58초 에 생성 : 2017년 12월 25일 15 17시 52분 58초rubyonrails로 사용자 시간대 상수를 감지합니다. activeadmin

내가 ActiveAdmin을이 코드를 사용하려고

paginated_collection(user_actions.page(params[:page]).per(15), download_links: false) do 
      table_for(collection, sortable: false) do |action| 
       column ("Timestamp"){|action| action.created_at.in_time_zone('EET').strftime("%Y-%m-%d %H:%M:%S")} 
      end 
      end 

그리고 제대로 작동합니다. 그러나 나는이

Time.zone.now.name 

처럼 가려고 사용자 시간대 일정 programmaticaly이

in_time_zone(timezone_variable) 

또는

in_time_zone(get_current_timezone_method) 

로를 통과 얻을 필요하지만, 그것은 작동 내가하지 않습니다 이 코드는 클라이언트가 아닌 서버 시간대를 얻으려고하기 때문에 생각하십시오. 클라이언트 측에서 클라이언트 시간대를 얻고, 시간대 수정을 포함하는 active_admin에서 created_at를 표시하는 방법이 있습니까? 사용자가 로그인 할 때 DB에 저장하는 사용자 시간대에 그리고

in_time_zone(action.user.timezone) 

에 전달하는 DB에서 그것을 얻을 - (previouse 방법은 불가능한 경우) 또한 나는 다른 방법에 대해 생각했다.. 서버 측 컨트롤러 동작에서 사용자가 시간대 상수를 DB에 저장하도록하는 방법이 있습니까?

답변

1

이것은 일반적인 답변이없는 일반적인 레일 문제입니다. setting a header with JavaScript을 시도해 볼 수는 있지만 가장 간단한 방법은 사용자가 사용자 프로필에 원하는 표준 시간대를 수동으로 설정하게하는 것입니다.

+0

예, JS가 유일한 방법입니다. 더 나은 접근법이 문서화되어 있습니다 [here] (https://stackoverflow.com/questions/22618056/javascript-timezone-information-how-to-get-america-los-angeles-or-equivalent). –