helperメソッドの使い方

ヘルパーメソッドの使い方をちゃんと理解できていなかったので備忘録。

目次

  1. viewでヘルパーメソッドを使う
  2. controllerでヘルパーメソッドを使う
  3. controllerでヘルパーメソッドを定義する

1. viewで使う

Ruby on Railsのhelper.rbはviewで使うメソッドを集めたモジュール(メソッドの塊)のイメージです。

helper.rbで作っておけば、どのviewからも使うことが可能になります。

例えば、、

sessions_helper.rb

module SessionsHelper
  def logged_in?
    !@current_user.[nil](<http://d.hatena.ne.jp/keyword/nil>)?
  end
end

application.html.erb

<% if logged_in? %>
  <li><%= link_to "Home", "/" %></li>
  <li><%= link_to "About", "/about" %></li>

sessions_helperで設定しておいて、htmlの条件で使用することでhtml側の記述をhelperでまとめることができます。複数箇所で使う場合に、同じコードを描かずに済むのでより見やすいコードにすることができます。

2. controllerで使う

ヘルパーメソッドをcontrollerで使いたい場面もあります。

ただし、いきなりcontrollerにヘルパーメソッド内のメソッドを記述しても「そんなメソッドないよ!」と怒られてしまうので、controller内で使いたい場合は、使いたいcontrollerにinclude helper名を入れます。

class UsersController < ApplicationController
  include SessionsHelper
  def make
    if logged_in?
      #........
    else
      #........
    end
  end

今回は例でusers_controllerで記述しましたが、