1. ホーム
  2. ruby-on-rails

[解決済み] Rails 3: "field-with-errors" ラッパーがページの外観を変えてしまう。これを回避するには?

2022-06-14 04:29:34

質問

メール欄です。

<label for="job_client_email">Email: </label> 
<input type="email" name="job[client_email]" id="job_client_email">

はこのようになります。

しかし、メールのバリデーションに失敗すると、こうなる。

<div class="field_with_errors">
  <label for="job_client_email">Email: </label>
</div> 
<div class="field_with_errors">
  <input type="email" value="wrong email" name="job[client_email]" id="job_client_email">
</div>

というのは、このような感じです。

どうすればこの外観の変化を回避できますか?

どうすればよいのでしょうか?

をオーバーライドする必要があります。 ActionView::Base.field_error_proc . 現在、このように定義されているのは ActionView::Base :

 @@field_error_proc = Proc.new{ |html_tag, instance| 
   "<div class=\"field_with_errors\">#{html_tag}</div>".html_safe
 }

アプリケーションのクラス内にこれを記述することでオーバーライドできます。 config/application.rb :

config.action_view.field_error_proc = Proc.new { |html_tag, instance| 
  html_tag
}

この変更を有効にするために、railsサーバを再起動します。