7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails カスタムHelperでコードを簡略化しよう

Posted at

今日の目標

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に以下のようなサンプルメソッドを作成します。

user_helper.rb
module UsersHelper
  def higakin
    "ひがきHelperサンプル"
  end
end

Viewを表示する画面で以下のようにコードを記述すると、helperのtogaminメソッドが呼び出され実行されます。

<%= higakin %>

Image from Gyazo

「ひがきHelperサンプル」という文字列が表示されました。

実際にこのHelperを利用して プロフィールavaterの表示を行なっていきます。

今回使用するのは 
Image from Gyazo画像を登録しない場合デフォルトはこのアイコンになります。よく見るやつです。

Gravater 世界共通のアバターとして認識されている「Gravatar」をユーザープロファイルに導入します。(Gravatarアカウントを作成する必要はありません。Gravatarは無料のサービスで、プロファイル写真をアップロードして、指定したメールアドレスと関連付けることができます。)

helpers/application_helper.rb
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)はユーザーテーブルの中で使い回すことが出来ます。
下記のように ビューで簡単に呼び出すことが出来ます。

show.html.erb
<%= image_tag avatar_url(@user), class: "round-img" %>
    

変数のように呼び出すことが出来、大変便利です。

Image from Gyazo

今回ヘルパーでメソッドを定義することにより ビューファイルの記述を短くすることが出来ました。

1点注意事項

ただし、1点だけ、定義するファイルだけは注意しなければいけません。

helperを定義するのは、「app/helpers/」ディレクトリに格納されているファイルでなければいけません。

今回の場合は「user_helper.rb」ファイルを作成し、userモデルだけで使用するhelperであれば、このファイルに定義することになります。

コードの可読性を上げ、シンプルなコードを書くことを心がけることで様々な機能の実装が可能になるはずです。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?