91
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

Organization

Railsヘルパーメソッドのまとめ(よく使うもの)

ヘルパーメソッドとは?

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
91
Help us understand the problem. What are the problem?