ヘルパーとは、ビューの中をすっきりとさせるための仕組みのことです。以下のように長いif文などはヘルパーに括りだす事で、ビューをきれいに出来ます。
# ヘルパーなし
<% if ... %>
some text
< % else %>
else text
<% end %>
# ヘルパー使用
<%= helper_method %>
Viewの中にifを埋め込むとけっこう長くなったりして見づらいコードになってしまうことが多くあります。要するに可読性が下がるということですね。なのでそういうコードがあった場合はヘルパーに括りだすと良いです。
ではヘルパーを実装してみましょう。今回はhelpersフォルダの中のclips_helperを使用して記述します。
その中にjp_date()というメソッドを作成し、受け取ったデータをユーザーが読みやすい形に変えます。オレンジ色の部分を記述しましょう。
実際のコードは以下になります。
# helpers/clips_helper.rb
module ClipsHelper
def jp_date(date)
date.strftime("%Y年%m月%d日 %H:%M")
end
end
ここではstrftimeというRubyのメソッドを使っています。このstrftimeメソッドは、日付や日時のデータを文字列に変換するためのものです。
例えば「2019-08-05 11:05:00」といった日時データを「2019年8月5日11時5分」という見やすい形に変換するためのべんりメソッドになります。
%~は以下に対応しています。
次に、ビューでヘルパーを呼び出してみましょう。以下オレンジ部分を追加して下さい。
# clips/show.html.erb
<div class="text-right small">
<span class="text-muted">
<%= jp_date opinion.created_at %>
</span>
</div>
今回は使用しませんがstrftimeを使えば、Twitterのように投稿日の表示を3日前というようにすることもできます。
例)投稿日が現在からみて何日前か
# clips/show.html.erb
<div class="text-right small">
<span class="text-muted">
<%= time_ago_in_words opinion.created_at %>
</span>
</div>
reverse_textというヘルパーメソッドを作ってみましょう。このヘルパーを使うと文字が逆になるというメソッドです(実用性はありません)
また、このメソッドを使用してオピニオンのタイトルを逆にしてみましょう。
ヒント:にメソッドを埋め込む場合はカッコで囲むと良い。
この項目では、オピニオン機能を作成しました。フォームやバリデーションを実装して、ヘルパーについても学びました。ヘルパーは自作する事が出来る事もわかりましたね。
無料ビデオ講座のお知らせ
Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。