プログラミングマガジン

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

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】「ActionView::Helpers」や「FormBui…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】「ActionView::Helpers」や「FormBuilder」について

12.26

  • miyabisan2
  • コメントを書く

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

ActionView::Helpersとは?

form_withとかsubmitとかのRailsのviewで使えるヘルパーがセットになっているクラスです。

ActionView::Helpers::FormBuilderとは?

form_with(form_for)で指定されたモデルと関連づけたフィールドを生成するためのものです。form_helperとモデル間のプロキシ役をしてくれるものになります。

用途

一般的には、既存のviewヘルパーをオーバーライドしてエラーメッセージを付加するような目的で使用します。

使い方

例えば、既存のviewヘルパーである「text_field」をオーバーライドしてみます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class ビルダー名(ApplicationFormBuilder等) < ActionView::Helpers::FormBuilder
  def text_field(method, options={})
    return super if options[:no_errors]
    super + errors_message(attribute)
  end
 
  #エラーメッセージ出力処理
  def errors_message(attribute)
    return nil if @object.nil? || (messages = @object.errors.messages[attribute]).nil?
 
    lis = messages.collect do |message|
      %{<li>#{@object.errors.full_message(attribute, message)}</li>}
    end.join
 
    %{<ul class="errors">#{lis}</ul>}.html_safe
  end
end

super

既存のビューヘルパーであるtext_fieldを指しています。

ヘルパーの配置場所

下記に配置することが多いでしょう。

1
app/helper

viewで使用する場合は下記のように指定します。

1
2
3
4
<%= form_with @モデル名, builder: ビルダー名 do |f| %>
  <%= f.text_field :title %>
  <%= f.submit %>
<% end %>

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

関連記事

  1. 2019 11.30

    【Ruby on Rails】モデルの状態を自動制御する「コールバック」、「フィルタ(Filter)」について

  2. 2019 12.14

    【VSCode】Railsのデバッグ設定(Mac)

  3. 2020 12.12

    【Ruby on Rails】「プレゼンター(デコレーター)」について

  4. 2019 11.30

    【Ruby on Rails】モデル同士を関連づけを便利に扱う機能

  5. 2020 03.28

    【Ruby on Rails】「Flashメッセージ」について

  6. 2019 12.08

    【Ruby on Rails】モデルを共通化する。

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

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

返信をキャンセルする。

【React】JSX、Componentの基本

【Ruby on Rails】「serialize」や…

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 ©  プログラミングマガジン | プライバシーポリシー