0

我正在使用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">&nbsp;#{instance.error_message.first}</span>)
      else
        html += %(#{html_tag}<span class="help-inline">&nbsp;#{instance.error_message}</span>)
      end
      html += %(</div>)
    end
  end
  html.html_safe
end

仅当子域存在时,我才想自定义标记fisheye,否则,我想使用不同的标记。我该如何做到这一点?我认为这是可能的,因为它instance被传递给了块。

4

0 回答 0