5


4

Ruby on Railsの12時間の時間とタイムゾーンを持つtime_select

Rails 2.3.8アプリのユーザーから時間とタイムゾーンをキャプチャする必要がありますが、選択を作成して解析するためのクリーンなソリューションを考えることができませんでした。

理想的には、次のドロップダウンメニューがあります。

  • 時間(1-12)

  • 分(0-59)

  • 午前午後

  • タイムゾーン

私が探しているものを達成する宝石/プラグインはありますか? データベースに時間とタイムゾーンの両方を保存する必要がありますか? ストレージの最適な戦略は何ですか?

最終的にはこれらの値をUTCで吐き出す必要がありますが、ユーザーは戻って正しいタイムゾーンで時刻を確認できるはずです。

2 Answer


11


適切な方法でタイムゾーンの選択を取得できます。

同様に、日付にはhttp://apidock.com/rails/ActionView/Helpers/DateHelper/date_select[date_select]があります。

ストレージ:

タイムゾーンがユーザーに固有で変更されない場合は、タイムゾーンをユーザーレコードに保存し、current_userを読み込むときに設定します。 RailsはUTCとの間で時刻を変換し、常にデータベースにUTCを保存し、そのデフォルトのタイムゾーンに自動的に変換します(夏時間を含む!)。 最も簡単な方法。

use_zone(zone)を使用すると、ブロックのデフォルトゾーンをオーバーライドできるため、フォーム値を受け入れてその関数で設定できます。そのブロックに値を設定します。

更新:私はいくつかのhttp://databasically.com/2010/10/22/what-time-is-it-or-handling-timezones-in-rails/[Rails timezone examples]をブログエントリとして作成しました。


1


私は個人的にjQueryを使用して表示のみを変更しました。

 ampm = ["12 AM","01 AM","02 AM","03 AM","04 AM","05 AM","06 AM","07 AM","08 AM","09 AM","10 AM","11 AM","12 PM","01 PM","12 PM","01 PM","02 PM","01 PM","02 PM","03 PM","04 PM","05 PM","06 PM","07 PM","08 PM","09 PM","10 PM","11 PM"]
    j("#game_start_time_4i option").each(function(index,value){
        j(value).html(ampm[index]);
    });

レール:

<%= datetime_select('game', 'start_time') %>