制作Rails' field_with_error'不适用于某些输入

时间:2015-09-26 03:16:42

标签: ruby-on-rails ruby-on-rails-4

我使用了一些使用的CSS表单元素:格式化样式,例如。

input:checked + label {
    background-color: green;
}

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

<input type="checkbox">
<label>My Checkbox</label>

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

<div class="field_with_errors">
    <input type="checkbox">
</div>
<div class="field_with_errors">
    <label>My Checkbox</label>
</div>

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

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

所以我想知道是否可以简单地使它成为field_with_errors如果它们被隐藏则不会包装元素。我还不太了解Ruby / Rails,但我知道(当然)它会运行pre-page-load。我仍然希望我可能没有想到的东西:-D。

也欢迎任何替代但同样有效的方法。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可以添加一个css规则,将带有类field_with_errors的div重新定义为不是显示块。

div.field_with_errors { display: inline-block; }