5

所以我有一个像这样的输入元素。包装元素是关于,你知道的,一个视觉的东西。

<div class="input-wrap">
  <input class="blah-blah" />
</div>

<input>包含错误时,它将是这样的:

<div class="input-wrap">
  <div class="field-with-errors">
    <input class="blah-blah" />
  </div>
</div>

但我想做的是:

<div class="input-wrap field-with-errors">
  <input class="blah-blah" />
</div>

我找到了这个页面,它非常接近我的问题

Rails 3:“field-with-errors”包装器改变了页面外观。如何避免这种情况?

现在我知道我可以扔了

config.action_view.field_error_proc = Proc.new { |html_tag, instance| 
   "#{html_tag}".html_safe
}

避免在<input>有错误的标签周围制作包装标签。但我真正想做的是,再次在<input>标签的直接父级上添加“字段错误”类。我可以这样做吗?ActionView 是否持有 DOM 节点的树结构?

4

1 回答 1

-2

您可以将处理错误的代码放在任何您喜欢的地方,只需将其作为实例变量上的块调用,例如

if @instance.errors.any?
  <div class="field with errors">
  @instance.errors.full_messages.each do |msg|
    <p><%= msg %></p>
  end
end

如果您经常使用它,最好将其拉出到帮助程序中并将实例变量作为参数传递。

于 2013-03-26T03:08:08.300 回答