form errorで作成されるcssクラスを変更する方法

railsで自動で生成されるform errorの属性を変更したい人っている気がします。

config/application.rbで変更できるのですが、一部分だけ適用したい!って場合があると思います。

一部分だけ適用する方法です。

基本的なやり方

まずは基本的なやり方です。

config/application.rb

config.action_view.field_error_proc = Proc.new do |html_tag, instance|
  %Q(<div class="field_with_errors">#{html_tag}</div>).html_safe
end

Rails アプリケーションを設定する | Rails ガイド

一部分のみに適用する方法

app/view_object/form_error.rb

module FormError
  ActionView::Base.field_error_proc = Proc.new do |html_tag, instacne|
    %Q(<div class="field_with_errors">#{html_tag}</div>).html_safe
  end
end

参考:ActionViewソースコード部分

rails/base.rb at 98131f751946d2d0a4868fd04ab058459fc28ed1 · rails/rails · GitHub

ここでhtml_tag正規表現で抽出して、特定のタグだけ属性を変えるなんていうこともできます。 もちろん、if文で条件判定が変更もできます。

あとは設置したい場所でinclude FormErrorとすれば読み込まれます。

例えば、User controllerはこれを読むという風にすれば、色々といじることができます。

以上です。