Rails 3.1 - 有错误的字段

时间:2011-10-02 12:58:07

标签: css validation ruby-on-rails-3.1

我正在使用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>

有谁知道我会如何实现这个目标?

1 个答案:

答案 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)。