Rails 3:“带有错误的字段”包装器会更改页面外观。如何避免这种情况?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

电子邮件字段:

<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服务器以使此更改生效。

用户回答回答于

您所看到的视觉差异正在发生,因为div元素是块元素。将此样式添加到CSS文件中,使其表现为内联元素:

.field_with_errors { display: inline; }

扫码关注云+社区