.field_with_errors混淆了引导程式的表单

Tho*_*ann 5 css ruby-on-rails twitter-bootstrap

我使用bootstrap 3的网格系统来布局一个简单的注册表单.但是,如果Rails中的验证失败,添加了类"field_with_errors"的div会弄乱我的布局.

以下是我的表单中的一行通常如下所示:

<div class="form-group">
    <label class="col-xs-2 control-label" for="user_secondary_email">Secondary email</label>
    <div class="col-xs-4">
    <input class="form-control" id="user_secondary_email" name="user[secondary_email]" type="text" />
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

验证失败时,当前应用的样式如下所示:

<div class="form-group">
    <div class="field_with_errors"><label class="col-xs-2 control-label" for="user_primary_email">Primary email</label></div>
    <div class="col-xs-4">
        <div class="field_with_errors"><input class="form-control" id="user_primary_email" name="user[primary_email]" type="text" value="" /></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,据我所知,这是代码应该是这样的:

<div class="form-group has-error">
        <label class="col-xs-2 control-label" for="user_secondary_number">Secondary number</label>
        <div class="col-xs-4">
            <input class="form-control" id="user_secondary_number" name="user[secondary_number]" type="text" />
        </div>
   </div>
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何让应用程序将其他类添加到正确的html标记中?

任何帮助表示赞赏!

AWM*_*AWM 15

您可能没有field_with_errors正确定义.在你的CSS中你应该有这样的代码:

.field_with_errors {
  @extend .has-error;
}
Run Code Online (Sandbox Code Playgroud)

除此之外,您的应用程序的行为应该如此.您期望的代码(问题的第三个代码块)不正确,因为没有字段将使用field_with_errors-class 进行样式设置.问题出在你的css文件中.因此,如果我的解决方案不起作用,请发布该文件.

  • 对于bootstrap 4,要扩展的类是`.has-danger`. (3认同)
  • [`.has-danger` 不再适用于 Bootstrap 4](/sf/ask/3232535491/)。如果你做[服务器端验证](https://getbootstrap.com/docs/4.0/components/forms/#server-side),你需要设置`.is-invalid`、`.is-valid`或来自您的代码的“.invalid-feedback”(至少在更新助手之前)。您还可以查看 [此处](https://jasoncharnes.com/bootstrap-4-rails-fields-with-errors/) 以了解基于初始化程序的方法。 (2认同)