Rails 3.1 - 有错误的字段

Amm*_*mar 2 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>
Run Code Online (Sandbox Code Playgroud)

而我需要的是:

<div class="field">
    <div class="field_with_errors">...label & input...</div>
</div>
Run Code Online (Sandbox Code Playgroud)

有谁知道我会怎么做到这一点?

Thi*_*ilo 8

一种方法是用跨度替换div,这不会破坏格式,因为它们不是块级元素.为此,请将其放在初始化程序中:

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  "<span class=\"field_with_errors\">#{html_tag}</span>".html_safe 
end
Run Code Online (Sandbox Code Playgroud)

另一种方法是简单地使原始div不显示为块级元素,在CSS文件中使用以下行:

.field_with_errors { display: inline-block; }
Run Code Online (Sandbox Code Playgroud)

但是一些旧的浏览器并没有完全支持这一点(看着你的IE6和7).