用 rails 自带的验证功能校验不通过的时候显示的样式好难看,要怎么自定义?
楼主是用脚手架吗?实际开发是不会用脚手架的,不过你也可以基于脚手架修改。
每个 ActiveRecord 对象会有一个 .errors
属性,里面储存了对象校验的结果,类似一个 hash。拿到 errors 数据你可以做任何想要的错误提示样式。
方法一,改样式
.field_with_errors {display: inline;}
把 field_with_errors 的样式改得不明显。
方法二,修改或者去掉 ActionView 默认的 error 结构
在 config/initializers 下面添加一个配置文件,内容是
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
"#{html_tag}".html_safe
end
这样会去掉多余的 field_with_errors,想定制样式,可以在这个 Proc 里面做手脚或者在 view 里面写逻辑。
#10 楼 @mappings ActionView 自带的 formbuilder 对这里的处理好像不是很好,之前我定制错误的需求也不是很大没深入研究。那个 Proc 就相当于关掉了。
我发现 simple form 对 error 的处理似乎更好,https://github.com/plataformatec/simple_form/ ,比如做出 twitter bootstrap 的样式 http://blog.plataformatec.com.br/2012/02/simpleform-2-0-bootstrap-for-you-with-love/ ,可以试试。