2011-01-18 23 views
0

デフォルトの日付形式を特定のユーザー形式に変換する方法を探しています。MySQL 5.1を使用してRails 2.0.2のデフォルトの形式から日付形式を変更する方法

私はRails 2.0.2で作業しています。 Scaffoldコマンドを使用してわかっているように、テーブルの一部として "id"、 "created_at" & "updated_at"の属性を自動的に取得します。

マイ足場コマンドは次のようになります - 私は基本的にブログのアプリケーションを実装しようとしています

script/server scaffold posts name:string title:string content:text 

。私は特定のブログが掲載されたときに日付を確認しようとする今、私は私がブログを日付を表示することができています

... ヘルパータグと私のindex.html.erbファイル内<%=h post.created_at %>通じを利用しますもともとデフォルトのフォーマットで作成されました。これは現在のところ:Tue Jan 18 13:00:05 +0530 2011 via MySql 5.1 DBです。私はこの形式をMonth date yearに変更したいと思います。上記の場合と同様に、2011年1月18日となります。

この点については、どうすればいいか教えてください。私は何を変える必要があるのか​​分からない。

私はindex.html.erbにデータを格納し、それをユーザ定義のフォーマットに変換する方法はありますか?私は、ビューから直接それについて行く方法についてあまり確信していません。

また、私はDRY(Do not Repeat Yourself)違反がRailsの原則に反していると思います。あなたは適切な方法を提案できますか?エンドユーザーの要件に応じて変更できるもの。

はあなたがビューでdate_select_tagを使用して、時刻オブジェクトにそれを渡すと、それはあなたのための魔法を行うだろうことができ..

答えて

0

レール日時変換を処理する方法形式は、使用しているデータベースとは無関係です。デフォルトの書式をオーバーライドするには、アプリケーションにイニシャライザを追加する必要があります。私はconfig/initializers/time_formats.rbに私の鉱山を持っています。そして、そのファイルにあなたはアプリ全体で使用する書式を定義します

Time::DATE_FORMATS[:just_date] = "%b %d, %Y" 
Time::DATE_FORMATS[:just_time] = "%I:%M%p" 

新しいフォーマットを使用するためには、あなたはとてもように、文字列変換に記号を渡します:

<%= @post.created_at.to_s(:just_date) %> 
+0

私はあなたのソリューションを試してみました..それは動作しません..私は再び上記の1つとしてデフォルトの形式の日付を戻しました.. – boddhisattva

+0

あなたのサーバーを再起動しましたか?これは間違いなく動作するはずです –

+0

こんにちは、それは問題でした。ありがとう!!変更が反映されることを確認するために、サーバーを再起動する必要がありました。しかし、どのようにしなければならないのか、必ずしもそうでなければならないのか、どのようにして解決するのだろうか。私はそれへの答えを知りたいと思っています..興味深いことに..一つの質問は別のものにつながります.. :) – boddhisattva

1

、ありがとうございました。また、あなたが使用してビューの日付に変換することができ :

編集...例えば、あなたの時間のオブジェクトは、その後に作成され、

<%= date_select_tag, :created_at, @user.created_at %> 

Railsは前後にそれを変換するの世話をするだろうと言うことができます@user.created_at.to_date.strftime()ここに文書化されているように - http://www.ruby-doc.org/core/classes/Time.html#M000392

+0

@カンデイ:これはDRYについて気にしなかったら私が探していたものだろう。あなたの答えにあなたの編集が助けられた..しかし、これは、すべてのページテンプレートのview..forでハードコードされなければならないと思う。あなたのやり方とリンクリソースに+1してください。 – boddhisattva

0
あなたは

あなたのOWにマージすることができ、たとえば activesupportの:: CoreExtensions ::時間::変換:: DATE_FORMATSを使用することができます

例: ActiveSupport :: CoreExtensions :: Time :: Convertions :: DATE_FORMATS.merge!( :デフォルト=> '%m /%d /%Y'、 :date_time12 => "% M /%D /%Y%I:%M%P」、 :date_time24 => "%のM /%D /%Y%のH:%M" )

+0

私の環境に上記のコードを追加することを意味しますか?私はそれを試した..それは動作しませんでした... – boddhisattva

+0

これはまた、サーバーの再起動を必要とすると思います.. Beerlingtonの場合..私はそれを試してみて、このように動作する場合に戻って戻ってくる..あなたの答えをありがとう.. – boddhisattva

関連する問題