美しいコードを!Ruby on Railsのhelperの使い方【初心者向け】

Railsで書くhelperの使い方について解説しています。実際のチーム開発でもより美しく見やすいコードを書くためにhelperはよく使われます。これからエンジニアを目指すという人であれば必要になってくる知識なので覚えておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が1,000以上あります。

RubyのフレームワークのRailsに存在するModel,View,Controllerの他にHelperというクラスが存在しているのはご存知でしょうか。HelperはRailsのコードを美しく書くために必須のクラスになっています。
今回はそんなhelperクラスについて解説していきます。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

20160620

 

田島メンター!!ヘルパーというのは何ですか〜?

 

20163020-2

 

ヘルパーは、定義しておくことでビュー内でその処理を呼び出すことができるものだよ。

 

20160620

 

例えばどんなときに使うんですか〜?

 

20163020-2

 

よく使う処理や、全く別の用途のクラス内でも同じことをしたいときなどに利用するといいよ。基本の流れを見てみよう。

 

helperとは

helperとはわかりやすく言うとViewをよりシンプルに書くためのものです。helperを使用することによって、より可読性の高いコードを書くことが可能になります。

可読性の高いコードというのは今後どのプログラミング言語を書く際にも、必要になってきますので、そういうコードを書く癖をつけましょう。

 

helperの例

<%= link_to%>
<%= form_tag%>
<%= f.submit%>

など、よく見るコードですがこれらはすべてhelperです。これだけだと分かりにくいので実際に使いながら解説していきます。

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

helper使用例

今回はテックアカデミーという文字を表示するhelperを作ってみましょう。

module ApplicationHelper
def tech
“テックアカデミー”
end
end

<%= tech%> #=>テックアカデミー

これで表示できます。

20160620

 

ヘルパーを定義するファイルはどこにあるんですか?

 

20163020-2

 

app/helpers内に各モジュールが存在するんだ。今回使用しているのはapplication_helper.rb、アプリ全体で使えるものだね。

 

20160620

 

あ!ありました!ここに処理を追加するんですね。

 

20163020-2

 

最後の<%= tech%>はビューに記述しよう。これによってヘルパーを使うことができるよ。

 

例えば、表示する文字をTechAcademyにしたければ

module ApplicationHelper
def tech
“TechAcademy”
end
end

<%= tech%> #=>TechAcademy

こうすれば変更できます。

 

このように、よく使う文字列などを登録しておけば、その文字列を変更したい場合や、間違っていた場合などに対応しやすいです。

今回は、単純な使用例のみ解説しましたが、まだまだ便利なhelperの使用例はたくさんあります。コードを綺麗に書くために興味のある方は調べてみましょう。

 

20163020-2

 

ヘルパーの基本的な流れは分かったかな?

 

20160620

 

まずapp/helpersのモジュールで処理を定義、それをビューから<%= 〜%>で呼び出すという形ですね。

 

20163020-2

 

またヘルパーには、定義していなくても最初から使えるform_tag(フォームを作成)などの便利なものがたくさんあるのでそれも活用しよう。これらは公式のガイドから名前とその機能を確認できるよ。

 

20160620

 

まずはそれらを使って、そこでできないことがあったら独自ヘルパーを定義するという形ですね。分かりました!

 

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。