你如何在Rails 3.1中显示表单字段高亮以显示验证错误?我知道脚手架会自动生成处理此操作的CSS和控制器代码,但我想知道是否有一种手动生成的方法。我已经通过以下方式实现了错误信息字符串的显示:@user.errors.full_messages.each...等等,但我无法使字段变为红色高亮。有什么建议吗?
谢谢。
谢谢。
假设您的 CSS 文件中有一个针对字段的 error 类:
<% if @user.errors[:name] %>
<%= f.label :name, :class => "error" %>
<% else %>
<%= f.label :name %>
<% end %>
这是你想要的吗?
额外信息: 这里有一个关于自定义默认ActiveRecord验证CSS的部分。
编辑: (关于额外的if语句)
# app/helpers/application_helper.rb
def field_class(resource, field_name)
if resource.errors[field_name]
return "error".html_safe
else
return "".html_safe
end
end
然后:
# in your view
<%= f.label :name, :class => field_class(@user, :name) %>
<%= f.label :password, :class => field_class(@user, :password) %>
[...]
(我可能在那里犯了一个错误 - 我正在手机上写作 - 但是你能得到基本的想法。你可以用无数种方式编写代码,所以按你喜欢的方式编写...)
.field_with_errors input{
border: 1px solid red !important;
}
这个 CSS 会在 input
元素周围绘制一条漂亮的红线,而important!
会覆盖任何现有的样式。
我必须这样做 (resource.errors[field_name].length > 0) 才能让它工作:
def field_class(resource, field_name) 如果 resource.errors[field_name].length > 0 返回 " custom_error1 ".html_safe 否则 返回 "".html_safe 结束 end
present?
方法:if resource.errors[field_name].present?
- rapcal
label
本身,而不必再编写任何额外的字符。 - Jakub Naliwajekresource.errors[field_name].present? ? "error".html_safe : "".html_safe
- notrab@user.errors.include?(:name)
,请参考 http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-include-3F。 - Artem P