表单元素的自定义HTML错误包装

Rap*_*ure 5 ruby-on-rails ruby-on-rails-3

我想找到一种方法来自定义默认错误html

<div class="field_with_errors"></div>
Run Code Online (Sandbox Code Playgroud)

参加我自己的课程:

     <div class="clearfix error">
        <label for="errorInput">Input with error</label>
        <div class="input">
          <input class="xlarge error" id="errorInput" name="errorInput" size="30" type="text">
          <span class="help-inline">Small snippet of help text</span>
        </div>
      </div>
Run Code Online (Sandbox Code Playgroud)

我相信,我从2007年发现了这个使用Rails 2的railscast.http://railscasts.com/episodes/39-customize-field-error.看起来Rails 3可能有更友好的方式来自定义这个HTML?

此外,它没有显示只是像我想要的那样直接向输入添加错误类的方法.

Hec*_*eal 7

您发布的链接中解释的方法今天仍在使用Rails中vanilla表单构建器.

所以,如果你想你的包裹一样输入你提到,创建重写的方法ActionView::Base.field_error_proc在你的environment.rb文件,例如,像这样:

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  if instance.error_message.kind_of?(Array)
    %(<div class="form-field error">#{html_tag}<small class="error">&nbsp;
      #{instance.error_message.join(',')}</small></div).html_safe
  else
    %(<div class="form-field error">#{html_tag}<small class="error">&nbsp;
      #{instance.error_message}</small></div).html_safe
  end
end
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我将输入(#{html_tag})包装在ZURB Foundation<div class="form-field error>..</div>使用的默认值中.我也使用标签(也是默认的基础)来显示输入下方的消息.<small class="error">...</small

但是,我建议使用像simple_form这样的表单构建器gem .它可以清理您的视图代码,并允许您需要的自定义级别.

这里查看railscast .

祝好运!