使 Rails 'field_with_error' 不适用于某些输入

Pet*_*ete 5 ruby-on-rails ruby-on-rails-4

我正在使用一些使用 :checked 样式的 CSS 表单元素,例如。

input:checked + label {
    background-color: green;
}
Run Code Online (Sandbox Code Playgroud)

相应的 HTML(例如,简化的)将是:

<input type="checkbox">
<label>My Checkbox</label>
Run Code Online (Sandbox Code Playgroud)

不幸的是,当 .field_with_errors 发挥作用时, :checked 样式会造成严重破坏,因为它会在两个元素周围创建一个 div,如下所示:

<div class="field_with_errors">
    <input type="checkbox">
</div>
<div class="field_with_errors">
    <label>My Checkbox</label>
</div>
Run Code Online (Sandbox Code Playgroud)

据我所知,鉴于 HTML 结构,不再可能根据是否选中复选框来设置标签样式。

我无法完全删除field_with_errors标签或输入,因为我正在处理的应用程序的遗留方面依赖于它。

所以我想知道是否可以简单地制作它,以便field_with_errors在隐藏元素时不会包裹它们。我对 Ruby/Rails 还不太了解,但我知道(当然)它运行预页面加载。我仍然满怀希望地希望也许我没有在想什么:-D。

任何替代但类似有效的方法也受到欢迎。

Chl*_*loe 3

您可以只使用原始 HTML 并自行生成复选框和标签,而无需使用视图助手。名称将是model[field],您必须确保它在未选中时设置正确的值,因为浏览器不会发回未选中的复选框。