Rails中的自定义验证标记(3)

时间:2011-01-19 11:03:59

标签: ruby-on-rails ruby-on-rails-3 validation

我正在尝试为所有表单元素完成以下标记

<div class="input-container">
  <label>Topic Title</label>
  <div class="input-holder">
    <input type="text" />
  </div>
</div>

<div class="textarea-container">
  <label>Post</label>
  <div class="textarea-holder">
    <textarea></textarea>
  </div>
</div>

无效字段标记:

<div class="input-container alert">
  <label>Topic Title</label>
  <div class="input-holder">
    <input type="text" />
  </div>
</div>
<div class="textarea-container alert">
  <label>Post</label>
  <div class="textarea-holder">
    <textarea></textarea>
  </div>
</div>

这是我目前的haml标记:

.input-container
  = f.label :title, 'Topic Title'
  .input-holder
    = f.text_field :title
.textarea-container
  = f.label :body, 'Post'
  .textarea-holder
    = f.text_area(:body, :size => "60x10")

现在,如果我希望容器div在表单中的字段无效时具有警报类,我需要做什么?

2 个答案:

答案 0 :(得分:0)

我想做同样的事情,但遗憾的是还没有想出一个干净的方法来处理它。

您可以覆盖ActionView :: Base.field_error_proc,但这对封闭元素没有帮助。

可以通过检查每个字段的错误('post.errors ['body'] .nil?')并有条件地输出警报类来手动完成。

下一步可能是将逻辑提取到视图助手中,之后可能会进一步抽象。

但是以更自动化的Rails-y方式做这件事仍然会很好。

答案 1 :(得分:0)

最好使用 formtastic simple_form 宝石,这些宝石开箱即用,支持突出显示单个无效字段。< / p>

我几乎可以肯定他们通过更改字段或容器上的CSS类来实现这一点,您也可以在样式表中使用它。