プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】フォーム関連のビューヘルパー(form_with等)
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】フォーム関連のビューヘルパー(form_with等)

11.25

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

フォーム関連ビューヘルパー

<form>要素を生成するためのメソッドです。モデルとフォームは、フォームのフィールドがモデルの属性に対応するという面で構造が似ているためにフォーム関連のビューヘルパーを使うと品質の高いコードを簡潔に記述することが可能です。

form_with(5.1で実装された)

Rails5.1以降で推奨されているビューヘルパーです。form_tagやform_forの機能を統合したものなのでこちらを使うようにしましょう。

form_tag(5.1以降は非推奨)

モデルに関連しない汎用的なフォームを生成、5.1以降では非推奨になりました。

form_for(5.1以降は非推奨)

特定のモデルに特化したフォームを生成、5.1以降では非推奨になりました。

form_withの仕様について

model:

「model: @モデル名」と指定することでモデルとフォームを対応づけます。指定できるのは「ActiveRecord::Base」を継承したクラスのインスタンスか、「非ActiveRecord」のインスタンス(フォームオブジェクト)のどちらかになります。フォームオブジェクトについては下記の記事で解説しています。

【Ruby on Rails】「フォームオブジェクト」について

リレーション関係にあるモデルを指定したい場合

親モデルに紐づく、子モデルをformのパラメータとして指定したい場合は下記のように配列を指定して対応します。

1
2
<%= form_with model: [@親モデル, @子モデル],local: true do |f| %>
<% end %>

コントローラ側では下記のような感じで記述することが可能です。

1
2
3
4
def メソッド名
    @親モデルのインスタンス変数 = 親モデル.find(params[:id])
    @子モデルのインスタンス変数 = 子モデル.new
end

url:

遷移先のURLを指定します。

local:

非同期通信を有効化するかどうかです。trueにしたら非同期を使わない、falseにすると非同期通信になります。

フォームの要素関連(フィールド系)ビューヘルパー

3つのヘルパーの中で利用頻度が高いです。「f」というのはブロック引数のことで、「form_withメソッド」の「〜do |f|」と指定している箇所で指定している引数のことです。(別にfじゃなくてもなんでも構いませんがfとすることが多いようです。)このfを利用することでモデルに対応するフィールドを出力することができます。

f.label

ラベル要素を出力する。

1
f.label :カラム名

f.text_field

入力フィールドを作る。

1
f.text_field :カラム名

f.text_area

詳細な入力フィールドを作る。

1
f.text_area :カラム名

f.hidden_field

hiddenパラメータを指定することが可能です。

f.submit

submitヘルパーを呼ぶ。

f.file_field

f.check_box

f.radio_button

f.select

f.collection_select

データベースの情報を元に選択肢を生成する。

f.grouped_collection_select

選択ボックスの選択肢をグループ化する。

スポンサーリンク
  • 2019 11.25
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 11.02

    【Ruby on Rails】「Redis」の基本、Railsへの導入

  2. 2019 12.04

    【Ruby on Rails】production環境での秘密情報の管理(Credentials)

  3. 2019 12.02

    【Ruby on Rails】ログ出力の記述法や様々な設定方法、設計方針

  4. 2019 12.24

    【Ruby on Rails】「rake」について

  5. 2020 09.16

    【Ruby on Rails】ビューヘルパー(エスケープ関連、タグ関連など)

  6. 2019 12.30

    【Rspec】「Controller Spec(コントローラスペック)」の基本

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【AWS】「Amazon EC2インスタンス」、「セキ…

【Ruby on Rails】バリデーション処理、メッ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー