6

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

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

  • 時間(1-12)
  • 分(0-59)
  • 午前午後
  • タイムゾーン

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

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

4

2 に答える 2

11

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

同様に、日付にはdate_selectがあります。

ストレージ:

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

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

更新:Railsのタイムゾーンの例をブログエントリとして作成しました。

于 2010-10-22T03:24:16.653 に答える
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') %>
于 2012-07-30T04:25:21.860 に答える