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 %> |
この記事へのコメントはありません。