時刻の整形をビューからヘルパーへ
さらにコードの見直し。 生成時刻と更新時刻を表示する時に、時刻のフォーマットを整形しているんだけど、これをビュー (_page.rhtml) に直接書いていた。 ビューの中に nil チェック(if page.created の箇所)が入っているし、時刻のフォーマットを変えるたびに複数の箇所を修正しないといけなくて面倒。
created: <%= page.created_on.strftime('%Y-%m-%d %H:%M') if page.created %> updated: <%= page.updated_on.strftime('%Y-%m-%d %H:%M') if page.updated %>
Rails では、ビューの見栄えを整えるために、ヘルパーという仕組みが用意されていて、ここで定義したメソッドはビューから直接呼べるようになってる(ヘルパーは module なので、きっとビューに include されるんだろう)。 昨日使った文字を切り取る truncate メソッドも、デフォルトで用意されているヘルパーの一つみたい。
ヘルパーを独自に用意する場合は、 app/helpers/note_helper.rb を編集する。 とりあえず、時刻を整形する show_time メソッドを追加する。
module NoteHelper def show_time(time) time ? time.strftime('%Y-%m-%d %H:%M') : '' end end
ビュー (_page.rhtml) 側はヘルパーを使うように修正する。
created: <%=h show_time(page.created_on) %> updated: <%=h show_time(page.updated_on) %>
見た目や動きは変わらないけど、コードはすっきりした。 リポジトリにも登録して、おしまい。