Time.outでの文字化け回避

例の本(RailsによるアジャイルWebアプリケーション開発)で勉強しているわけですが、
第4章の時刻表示の部分で
<%= 1.hour.from_now %>とか、<%= Time.now %>
で取得した時刻表示が、文字化けしてしまいます。

おおかた、時間の文字列表記に「時」、「分」、「秒」が使われていて、それをWeb上で表示する際に、化けているんだろうなぁと思いました。
ググってみたら、すぐに解決方法が分かりました。

参考URL:http://d.hatena.ne.jp/Kanta/20060405/1144164918

Railsのconfigで設定可能みたい。 /config/environment.rb に

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.update
 :default => "%m/%d %H:%M:%S"

を追加。上記の場合時間は「04/04 20:16:23」の形で表示される。

私の場合は、年も表示しておきたかったので、最後の部分を、
default => "%Y/%m/%d %H:%M:%S"
という表記にしてみたらうまいこと表示されました。

なるほど、h()というのはHTMLでエスケープしてサニタイジングするわけだ。
Strutsでいうところの、bean:writeとか、JSTLのc:outやfn:escapeXmlに相当するんだろうけど、短い記述ですむから便利そうです。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)