【rails】viewに関する処理はhelperを使う

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

view表示に関わるコードはhtmlに書かない

前回、viewにrubyのコード(if文)を埋め込んで、viewの切り替えができるようになった

ただ、viewにrubyのコードを書くことは推奨されていない

かつ、コントローラーに分岐を書くこともできない

その解決策として、今回は「helper」に処理を書いていく


helperにviewの処理を書く

helperとは、viewを拡張するために使うもの


app/helpers/tabs_helper.rbを作る

名前は「●●.helper」とするのが決まり

helperではmoduleと書き始める

module TabsHelper
end

ファイル名とあわせてtabs_helperならTabsHelperとするのが決まり


viewで使いたいメソッドを定義する

viewに書いていたコード#{'active' if current_page?(●●_path)}"について、helperで書き直す

module TabsHelper

  def add_active_class(path)
    'active' if current_page?(path)
  end

end

定義したadd_active_classを_tab.html.hamlに埋め込む

.tabs
  .tabs_item{class: "#{add_active_class(root_path)}"}
    = link_to '新着記事一覧', root_path
  .tabs_item{class: "#{add_active_class(timeline_path)}"}
    = link_to 'タイムライン', timeline_path
  • helperで定義されたメソッドは勝手に読み込まれ、viewの中でいつでも使える
  • viewで使えるメソッドは基本、helperでも使える

#DAY4