読者です 読者をやめる 読者になる 読者になる

読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

フォームのvalidationエラー表示の整形

Ruby Rails

入力フォームでvalidationのエラーがあった時、フィールドを<div class="field_with_errors">タグで囲って強調してくれますが、レイアウトが壊れることがあります。その対応で<div>を<span>に置き換えるという記事をネット上で見ましたが、やはりレイアウトが乱れることがあるようです。(jQuery Mobileを使っている場合。)
なので、クラスだけ追加するコードを書いてみました。

    #...
    # Rails' default error field may break layout. The followings treats that.
    ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
      if html_tag.sub!(/class="/, 'class="field_with_errors ').nil?
        html_tag.sub! /(\/?>)/, ' class="field_with_errors"\1'
      end
      html_tag.html_safe
    end

Rails/Rubyの初級者でHTMLをオブジェクトとして扱う方法がよくわからなかったので、タグを文字列として扱いました。もしクラスの追加など簡単にできるライブラリがあればご紹介ください。