举个例子,在表单中有这样的内容:
<dl>
<dt>
<%= f.label :subject %>
</dt>
<dd>
<%= f.text_field :subject %>
</dd>
</dl>
在浏览器中显示成:
■Subject
(※注:■由CSS生成)
如果对表单进行验证,验证后再显示的格式就乱了,变成这样:
■
Subject
为什么会错位呢?
天蓬老师2017-04-21 11:17:23
You should override ActionView::Base.field_error_proc
. It's currently defined as this within ActionView::Base
:
@@field_error_proc = Proc.new{ |html_tag, instance|
"<p class=\"field_with_errors\">#{html_tag}</p>".html_safe
}
You can override it by putting this in your application's class inside config/application.rb
:
config.action_view.field_error_proc = Proc.new { |html_tag, instance|
"#{html_tag}".html_safe
}
Restart rails server for this change to take effect.
(Full text copied from http://stackoverflow.com/questions/5267998/rails-3-field-with-errors-wrapper-changes-the-page-appearance-how-to-avoid-t)
Of course, it is more recommended to change it to this
config.action_view.field_error_proc = Proc.new do |html_tag, instance|
class_attr_index = html_tag.index 'class='
if class_attr_index
html_tag.insert class_attr_index+7, 'error '
else
html_tag.insert html_tag.index('>'), ' class="error"'
end
end