ver.2橋本亮介の個人ブログ。ActiveRecord::Baseを継承したモデルのなかで普通に日付の属性にアクセスるるとその型はActiveSupport::TimeWithZoneになる。今日から数えてその日時が何日後なのかあるいは何日前なのかといったことを表示するためにはActionViewのdistance_of_time_in_words_to_nowを利用すれば実現できます。ローカルの時間を許容するのであれば、サーバーに負担をかけないためにローカルで動作するtimeago.jsやlivestamp.jsを利用するのもオススメです。今回問題になったのはある日付からある日付までの時間を計算する必要があったことです。※livestamp.jsをどのように使うかの説明は割愛します。このライブラリ(他のもそうですが)ある日付と現在の時間を計算して表示することを目的としていますので、上記の問題にはそぐわなかったわけです。トリッキーな方法で解決しました。%>"></span>[/ror]のようにします。現在日時からその分離れている架空の日時を返すというものです。本日からどれくらい離れているのかを計算するlivestamp.jsの値として利用できるわけです。デメリット・サーバー側で計算したときの「今日」とローカルでlivestamp.jsが計算した「今日」では少なくとも通信時間分のズレがあります。厳密さが必要なときは利用できません。サーバーに負担をかけぬようlivestamp.jsを使うのに、結局サーバーでの計算が必要。・htmlの内容に架空の(何の意味もない)日付が記述されてしまう。追記:(2012/09/17)上記にバグ(というか見落とし)ありました。livestampは時間がたつと更新されます。「今の時間」は刻々と代わっていくけれども、終了日時は変わらないのでおかしいことになります。livestamp.jsの中身を見てみるとpauseというメソッドがあるのですが、グローバルらしいので使えません。ライブラリはいじりたくないので、かわりにdestroyメソッドを使ってなんとかしました。%></span>[/ror]一度livestampで値を出してからその値を変数に入れておいてlivestampをdestroyします。それから再度textメソッドを使って再設定しています。コメントをキャンセルメールアドレスが公開されることはありません。railsserversimplecovSmartywordpress最近の投稿あーやっちまった。