ヘルパーメソッドとは?
ViewをよりシンプルにDRYに書くための、Railsで用意されたモジュール。
基本的にはviewをhelpしてくれるもの。自分で作ることもできる。
基本的なヘルパーたちの例
form_tag
- フォームをどうにかしたい時に使う。
- name, value属性が必要。
submit_tag
- submit機能をつけたいときに使う。
<input name="****" type="submit" value="***" />
form_tag/submit_tagの例
<%= form_tag,{ method:'path'} do %>
// # method指定しない場合、デフォルトでpostになる,{}省略可能
<%= text_field_tag :title, @note.title %>
// :title がname
// @note.titleがvalue
<%= submit_tag '保存' %>
<% end %>
text_field_tag
- テキストフィールド
- name,value属性が必要
text_area_tag
- テキストエリア(行数のあるもの)
-
text_field_tag
と同じ使い方
link_to ヘルパー
- リンク挿入の時に使う。
- "URL"部分には、名前付きルート
root_XXXX
のしても可能 - 'テキスト'の部分は変数でもOK。
- idとclassはハッシュとして与えるが、{}省略可能
link_to
<%=link_to ’テキスト', "URL" , {id:"top-link", class: "btn top-btn"} %>
How to Use
つくったヘルパーをコントローラで使えるようにするには、コントローラでヘルパーを定義したヘルパーファイルを
include ヘルパー名
で読み込む必要がある。
helper定義
application_helper.rb
module ApplicationHelper
def current_user?(user)
current_user.id == user.id
end
end
helper呼び出し
users_controller.rb
class UsersController
include ApplicationHelper
end
if !current_user?
show.htmr.erb
<% if current_user.id == @note.user.id %>
<% if current_user?(@note.user) %>
notes_controller.rb
if current_user.id != note.user.id
redirect_to root_oath
end
def create
@note = Note.new(note_params)
@note.user_id = current_user.id
end