今日の目標
Railsで美しく見やすいコードを書くためによく使われる「カスタムHelper」というものを紹介していきます。
Helperとは
「Helper」とは、Viewをよりシンプルに書くためのモジュールです。
Viewでの共通する処理をメソッドとして定義し、簡単に使いまわせるようにした機能です。
Helperを利用することによって、繰り返し記述するような処理を簡略化することができ、開発効率を高めてくれます。
以下のコードはリンクを生成するHelperです。
<%= link_to "New User", new_user_path %>
Railsにはその他にも、ボタンやフォーム等を作成するためのHelperが多数デフォルトで用意されており、また、Helperを自作することもできます。
Helperを上手く利用することによって、コードを簡略化でき可読性が高まります。
Helperの作成
実際にHelperを作成します。
Helperモジュールはapp/helpers配下に用意されています。
application_helper.rbには、アプリケーション全体に渡って使用するHelperメソッドを定義し、
user_helper.rbは、user配下のみで使用するHelperを定義します。
user_helper.rbに以下のようなサンプルメソッドを作成します。
module UsersHelper
def higakin
"ひがきHelperサンプル"
end
end
Viewを表示する画面で以下のようにコードを記述すると、helperのtogaminメソッドが呼び出され実行されます。
<%= higakin %>
「ひがきHelperサンプル」という文字列が表示されました。
実際にこのHelperを利用して プロフィールavaterの表示を行なっていきます。
今回使用するのは
画像を登録しない場合デフォルトはこのアイコンになります。よく見るやつです。
Gravater 世界共通のアバターとして認識されている「Gravatar」をユーザープロファイルに導入します。(Gravatarアカウントを作成する必要はありません。Gravatarは無料のサービスで、プロファイル写真をアップロードして、指定したメールアドレスと関連付けることができます。)
module ApplicationHelper
def avatar_url(user)
return user.profile_photo unless user.profile_photo.nil?
gravatar_id = Digest::MD5::hexdigest(user.email).downcase
"https://www.gravatar.com/avatar/#{gravatar_id}.jpg"
end
end
このように helperで定義したavatar_url(user)
はユーザーテーブルの中で使い回すことが出来ます。
下記のように ビューで簡単に呼び出すことが出来ます。
<%= image_tag avatar_url(@user), class: "round-img" %>
変数のように呼び出すことが出来、大変便利です。
今回ヘルパーでメソッドを定義することにより ビューファイルの記述を短くすることが出来ました。
1点注意事項
ただし、1点だけ、定義するファイルだけは注意しなければいけません。
helperを定義するのは、「app/helpers/」ディレクトリに格納されているファイルでなければいけません。
今回の場合は「user_helper.rb」ファイルを作成し、userモデルだけで使用するhelperであれば、このファイルに定義することになります。
コードの可読性を上げ、シンプルなコードを書くことを心がけることで様々な機能の実装が可能になるはずです。