ruby - rails的表单验证后格式错乱问题

浏览:26日期:2022-10-23

问题描述

举个例子,在表单中有这样的内容:

<dl> <dt><%= f.label :subject %> </dt> <dd><%= f.text_field :subject %> </dd> </dl>

在浏览器中显示成:

■Subject

(※注:■由CSS生成)

如果对表单进行验证,验证后再显示的格式就乱了,变成这样:

■Subject

为什么会错位呢?

问题解答

回答1:

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.

(全文抄袭自 http://stackoverflow.com/questions/5267998/rails-3-field-with-errors-wrapper-changes-the-page-appearance-how-to-avoid-t)

当然,更推荐改成这样

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'’ endend

相关文章: