用户形象图片

关键字:   Rails custome field_error    

我们先来看action_view/helpers/active_record_helper.rb里的一段代码:

代码
  1. module ActionView   
  2.   class Base   
  3.     @@field_error_proc = Proc.new{ |html_tag, instance| "<div class=\"fieldWithErrors\">#{html_tag}</div>" }   
  4.     cattr_accessor :field_error_proc   
  5.   end   
  6.   
  7.   module Helpers   
  8. ...   
  9.     class InstanceTag   
  10.       def error_wrapping(html_tag, has_error)   
  11.         has_error ? Base.field_error_proc.call(html_tag, self) : html_tag   
  12.       end   
  13.     end   
  14.   
  15.   end   
  16. end   

我们看到,我们的输入框被一个class为fieldWithErrors的div框包围了,当该field出错时我们可以使用css控制显示效果
如果我们想自定义field_error也是很简单的:
代码
  1. # environment.rb   
  2. ActionView::Base.field_error_proc = Proc.new do |html_tag, instance_tag|   
  3.   "<span class='field_error'>#{html_tag}</span>"   
  4. end   


因为field_error_proc是一个类变量(两个@开头),所以我们可以在environment.rb里修改它

 

 

注:修改完要重新加载rails所以要重新启动项目

回到帖子顶部