我正在使用ActionView::Base.field_error_proc
自定义 Rails 应用程序中的验证错误。我创建了一个初始化程序,如下所示:
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
html = %(<div class="control-group error">#{html_tag}</div>)
elements = Nokogiri::HTML::DocumentFragment.parse(html_tag).css "label, input"
elements.each do |e|
if e.node_name.eql? 'label'
e['class'] = "control-label"
html = %(#{e})
elsif e.node_name.eql? 'input'
html = %(<div class="controls">)
if instance.error_message.kind_of?(Array)
html += %(#{html_tag}<span class="help-inline"> #{instance.error_message.first}</span>)
else
html += %(#{html_tag}<span class="help-inline"> #{instance.error_message}</span>)
end
html += %(</div>)
end
end
html.html_safe
end
仅当子域存在时,我才想自定义标记fisheye
,否则,我想使用不同的标记。我该如何做到这一点?我认为这是可能的,因为它instance
被传递给了块。