我正在使用Rails帮助程序方法来构建表单,并使用验证。
每当其中一个验证失败时,rails会将相应的输入和标签包装在field_with_errors标记中。哪个没问题。
但是,由于某些原因,rails将输入和标签包装在不同的div中,使得样式非常难:
例如:
<div class="field">
<div class="field_with_errors">...label...</div>
<div class="field_with_errors">..input ...</div>
</div>
我需要的是:
<div class="field">
<div class="field_with_errors">...label & input...</div>
</div>
有谁知道我会如何实现这个目标?
答案 0 :(得分:8)
一种方法是用跨度替换div,这不会破坏格式,因为它们不是块级元素。为此,请将其放在初始化程序中:
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
"<span class=\"field_with_errors\">#{html_tag}</span>".html_safe
end
另一种方法是简单地将原始div显示为块级元素,在CSS文件中使用此行:
.field_with_errors { display: inline-block; }
但some of the older browsers并未完全支持这一点(看着你的IE6和7)。