#ヘルパーとは
helper
(ヘルパー)を一言で表すと、
「処理を別ファイルに分離し、viewをよりシンプルにDRYに書くためのモジュール」
です。
(view以外もhelpできますが、基本的にはviewをhelpしてくれるものだと捉えましょう)
※DRY(Don’t Repeat Yourself)原則
とは
「同じコードを重複させない」という意味だけでなく、「1カ所の修正で済むのであれば、できる限りそうなるようにプログラムを作るべき」という意味をもつ原則です。
Railsには、もともと用意されているhelper
→link_to
、form_with
、image_tag
などが存在しますが、
今回は、それとは別に独自ヘルパーについて説明します。
#独自ヘルパーの活用方法
ヘルパーモジュールは、app/helpers
配下にあります。
ファイルの使い分けとして、
・application_helper.rb
は、
アプリケーション全体にわたって使うヘルパーメソッドを定義
・xxx_helper.rb
は、
その"xxx"だけで使うヘルパーメソッドを定義
と使い分けると、ヘルパーメソッドの管理が楽です。
※デフォルトでは、application_helper.rb
ファイルが準備されていますが、
xxx_helper.rb
はrails g controller〜
の段階で一緒に作成されます。
###例
####①名前を入れるとこんにちは!〜を自動で追加する独自ヘルパーメソッド生成
module SumpleHelper
def hello(name)
"こんにちは! #{name}さん。"
end
end
####②実際に使用
<%= hello("ミルクボーイ") %>
####③ブラウザでの実行結果
こんにちは! ミルクボーイさん。
となります。
#注意点
もし、同じ名前のヘルパーが読み込まれてしまうと、Viewファイルなどでヘルパーを使ったときにどちらのヘルパーが使用されるか分かりません。
そのため、ヘルパー名はの命名には気をつけましょう!
→他のViewファイル等で被らない独自の名前をつけるなど。
ちなみに今回のようなhello
は危険なヘルパー名と言えます。
#helperを活用する基準
●同じ表示が繰り返される場合
Railsアプリケーションのあらゆる箇所で、同じ内容を表示する場合は、ぜひhelper
を利用しましょう。
→helper
として1カ所にまとめておくことで、その内容の修正が簡単になります。
●ほぼ同じViewだが、属性などによって表示内容を変えたい場合
動的にHTMLを生成する場合、Viewファイル内にプログラムを記載することがあります。
しかし、そうするとViewファイルの可読性が悪くなります。
そんなときに、helper
を使って分離してやることで、シンプルで綺麗なコードを実現できます。
#さいごに
今回紹介したように、独自のhelper
を定義して開発を進めていくことによって、よりスマートに開発を進めていけます。
これを機にRailsにはどんなhelper
が用意されているのか、またどんな独自helper
を作ることができるのか。
調べてみてはいかがでしょうか!