Ruby on Rails ヘルパーの使い方【ヘルパーはモジュールです】

どうも、tatsuです!

今回は、Ruby on Railsのヘルパーの使い方について解説していきます。

ヘルパーとは

ヘルパーとは、ビューでの共通処理をメソッドとして定義し、簡単に使いまわせるようにした機能です。

代表的なものだとlink_toです。

<%= link_to "一覧へ戻る", memos_path %>

これはRailsが用意してくれているヘルパーの1つで、他のビューへのリンクを簡単に生成してくれます。

また、Railsが用意してくれているもの以外に、自分で定義することができます。

【Railsが用意している】ヘルパー

Railsが用意しているヘルパーは本当にたくさんあります。
ここではよく使うUrlHelperFormHelperに含まれるヘルパーを紹介します。

他にもヘルパーはたくさんあるので、以下を参考にしてみてください♪
https://edgeapi.rubyonrails.org/classes/ActionView/Helpers.html

UrlHelper

UrlHelperに含まれるヘルパーは、リンクを生成する機能を持ちます。

link_to

文字列のリンクを生成します。

<%= link_to 表示文字列, 遷移先パス %>

例:

<%= link_to "一覧へ戻る", memos_path %>

結果:

button_to

ボタンのリンクを生成します。
button_toのデフォルトはpostになっているため、getを指定する必要があります。

<%= button_to 表示文字列, 遷移先パス, method: :get %>

例:

<%= button_to "一覧へ戻る", memos_path, method: :get %>

結果:

FormHelper

FormHelperに含まれるヘルパーは、フォームを簡単に作ることができる機能を持ちます。

form_with

モデルに対応するフォームの全体を作成します。

<%= form_with model: 対応させるモデル do |f| %>
  # 中身
<% end %>

例:

<%= form_with model: @memo do |f| %>
  # 中身
<% end %>

※fはブロック引数といって、form_withの中でfに対してメソッドを呼び出すことができます。
また、慣習的にfが使われるというだけで、aでもbでも名前はなんでもかまいません。

 

text_field

form_withの中でブロック引数に対して使用すると、テキストフィールドを生成します。

<%= form_with model: 対応させるモデル do |f| %>
    <p>
        <%= f.text_field :モデルのカラム%>
    </p>
<% end %>

例:

<%= form_with model: @memo do |f| %>
    <p>
        <%= f.text_field :title %>
    </p>
<% end %>

結果:

他のHTML部品
テキストフィールドと同じように、以下のような部品もあります。
※ここで紹介したもの以外にもたくさんあります。

メソッド名 説明 画像
date_field 日付
password_field 伏字
file_field ファイルアップロード
label ラベル
check_box チェックボックス(ラベルと一緒に使うと、何のチェックボックスかわかりやすい)

 

submit

form_withの中でブロック引数に対して使用すると、送信ボタンを生成します。
これが無いとデータをコントローラーに送れませんね。笑

<%= form_with model: 対応させるモデル do |f| %>
    <p>
        <%= f.submit%>
    </p>
<% end %>

例:

<%= form_with model: @memo do |f| %>
    <p>
        <%= f.submit %>
    </p>
<% end %>

結果:

ヘルパーの説明は以上です。
 

XXX_path
link_toでの遷移先に、ルーティングで調べたPrefix + _path と指定していますよね?

<%= link_to "一覧へ戻る", memos_path %>

実はこれもヘルパーになります。

ルーティングを設定したときにRailsがヘルパーを作ってくれているんですね。

【自分で作る】カスタムヘルパー

今度はヘルパーを自作してみましょう。

app/helpers/application_helper.rbを開いてください。
以下のようになっていると思います。

module ApplicationHelper
end

ここにメソッドを定義すれば、ビューでヘルパーとして呼び出すことができます。

例えばサンプルとして文字列を出力するメソッドを書いてみました。

module ApplicationHelper
    def outputTemplate
        "自作ヘルパーのサンプルです"
    end
end

これをビューで以下のように呼び出してあげると、「自作ヘルパーのサンプルです」という文字列が画面に表示されます。

<p><%= outputTemplate %></p>

 
簡単ですが、このようにしてヘルパーを自分で作ることも可能です。

ヘルパーはモジュール

ここまでで気づいた方もいるかもしれませんが、ヘルパーはモジュールです。

ヘルパークラスも、しっかりmoduleとして定義されています。

module ApplicationHelper
end

Rubyの機能であるモジュールを、ビューでの共通処理として使いやすく提供しているものがヘルパーなんですね!

まとめ

今回はヘルパーとその使い方、モジュールとの関係を説明しました。

共通化できるところは積極的に共通化を検討して、きれいなコードを保ちましょう!

それでは!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です