アプリの設定に応じて、これを行う方法はいくつかあります。いずれもHeroku環境に固有のものではありません。
あなたのアプリがサインアップできるのであれば、おそらくUserモデルを持っていて、認証/サインアップにDevise gemを使用している可能性があります。 db(:time_zone)にフィールドを追加し、登録時にユーザーのタイムゾーンをこのフィールドに格納します。
>> rails generate migration add_time_zone_to_users time_zone:string
>> rake db:migrate
Railsはあなたにあなたのユーザーに表示することができ、その中にすべての時間帯で選択リストを与える便利なtime_zone_selectフォームヘルパーを提供します。これをユーザーのサインアップフォームに追加し、サインアップ時にユーザーがタイムゾーンを設定できるようにします。 http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/time_zone_select
アプリケーションコントローラでは、次のようなことができます。
before_filter :set_time_zone
def set_time_zone
#current user is a devise method see https://github.com/plataformatec/devise
Time.zone = current_user.time_zone if current_user
end
はその後、ユーザーのタイムゾーンの時刻を表示する時間インスタンス上のアプリコール.in_time_zone
に日付を表示するとき。
<%= Time.now.in_time_zone %> or <%= @your_model.created_at.in_time_zone %>
あなたがユーザー認証をしていない場合は、JavaScriptにフォールバックする可能性があります。
http://www.pageloom.com/automatic-timezone-detection-with-javascript
が最後にあなたが両方のハイブリッドを使用することができますし、まず自分のタイムゾーンではJavaScriptを使用してオフセット検出:これを行うには、日付オブジェクトにネイティブのJavaScript getTimezoneOffset()
を使用するか、またはより良い次jsTimezoneDetectプラグインを使用することができますこの値をrailsのセッション/クッキーに保存し、before_filterを使用して上記のようにTime.zoneを設定しますが、以前はjavascriptで計算されたtime_zone値のセッションに基づいています。
を使用することができ、そしてそれは私がJSと、クライアント側で何かをする必要があり、サーバに戻ってそれを渡すだろうと思わ。お知らせ下さい。 –