3

フォームで YYYY-MM-DD 形式を変換し、ビューを MM/DD/YYYY に変換しようとしています。これはかなり標準的なアメリカの日付形式です。.strftime("%m/%d/%Y")これについてどうすればよいかわかりません - /show の日付インスタンスを呼び出すとうまくいくと思いました。非常に混乱しています-実際に意味のある日付を変換する方法を説明するドキュメントが見つかりません。私はこのレールキャストをフォローしています: http://railscasts.com/episodes/213-calendars-revised

それが役立つ場合、私はjQuery datepickerを使用しており、このcoffeescriptを持っています:

jQuery ->
  $('input.datepicker').datepicker()
    dateFormat: 'mm-dd-yy'
    weekStart: 0
    autoclose: true

_形

   <%= f.label :due %><br />
   <%= f.text_field :due, { :class => 'datepicker' } %>

上記はMM/DD/YYYY形式の日付をフォームに入力しますが、YYYY-MM-DDとして保存されます

--- 更新/解決策が見つかりました ---

私は正しい軌道に乗っていて、実際には狂っていなかったことがわかりました。.try私の問題の一部は、nilでない場合にのみメソッドを実行するビューを呼び出すことによって修正された nil オブジェクトの問題を抱えていたことです。

.try(:strftime, "%m/%d/%Y") 

また、次のgemをインストールしました:gem 'american_date'日付を自動的に解析します。ショー ビューではうまく機能しますが、フォーム ビューでは YYYY-MM-DD を取得します (編集ビューのみ)。

4

3 に答える 3

4

RoR で日付を操作する場合、3 つのタスクを解決する必要があります。これらのソリューションが私にとって最も簡単であることがわかりました。

1.日付を正しく表示する方法

I18n gem をインストールし、config\locales\en.yml で日付形式を確認します。次にI18n.l() (または単に l) フォーム ヘルパーを使用して、html.erb ファイルの日付をローカライズします。

  date:
    formats:
      default: "%m/%d/%y"

2.ユーザーにとって便利な方法で日付を変更する方法。

jQuery datepicker (またはブートストラップ datepicker など) を使用し、en.yml 形式に従って jQuery ウィジェット オプションで日付形式を設定します。

3. 日付をローカライズ (ビュー) 形式からアクティブレコード属性に変換する方法。

Delocalize gem をインストールし、en.yml ファイルの date: セクションに :input サブセクションを追加します。

input:
  formats:
    - :default

これで、日付を割り当てると、ローカライズされた形式 (mm/dd/yy) からデータベース形式 (yyyy-mm-dd) に自動的に変換されます。

于 2012-12-23T19:11:38.493 に答える
3

説明どおりにこれを機能させるには、オプションaltFieldとオプションを使用する必要がありました。altFormat

$('input.datepicker').datepicker({
   dateFormat: "mm/dd/yy", 
   altField: alt_field, 
   altFormat: "yy-mm-dd"});

alt_fieldこれには、標準の db 形式で実際に日付を保持する隠しフィールドが必要です。

于 2012-12-23T18:01:25.483 に答える
0

以下のgemを含めると、アメリカの日付が自動的にdb形式に保存されます。

gem 'american_date'
于 2015-02-26T12:47:35.887 に答える