Rails 中的 .field_with_errors 使用插件破坏了 Twitter Bootstrap 3 输入样式

Posted

技术标签:

【中文标题】Rails 中的 .field_with_errors 使用插件破坏了 Twitter Bootstrap 3 输入样式【英文标题】:.field_with_errors in Rails breaks Twitter Bootstrap 3 input styles with addons 【发布时间】:2015-01-13 15:05:04 【问题描述】:

我有 HAML

...
.row
  .col-md-3.form-group
    = offer.label :departure_date, "Abfahrt"
    .input-group.date
      = offer.text_field :departure_date, class: "form-control", readonly: ""
      %span.input-group-addon
        %i.glyphicon.glyphicon-calendar
...

生成这样的 html(日期选择器标记)

<div class="row">
    <div class="col-md-3 form-group">
        <label for="offer_departure_date">Abfahrt</label>
        <div class="input-group date">
            <input class="form-control" readonly="readonly" type="text" name="offer[departure_date]" id="offer_departure_date">
            <span class="input-group-addon">
                <i class="glyphicon glyphicon-calendar"></i>
            </span>
        </div>
    </div>
</div>

当我遇到错误时,Rails 将 labelinput 包装为具有类 field_with_errors 的 div。

<div class="row">
    <div class="col-md-3 form-group">
        <div class="field_with_errors"><label for="offer_departure_date">Abfahrt</label></div>
        <div class="input-group date">
            <div class="field_with_errors"><input class="form-control" readonly="readonly" type="text" value="" name="offer[departure_date]" id="offer_departure_date"></div>
            <span class="input-group-addon">
                <i class="glyphicon glyphicon-calendar"></i>
            </span>
        </div>
    </div>
</div>

在我的 application.css.sass 中,我使用以下内容扩展了 field_with_errors

.field_with_errors 
  @extend .has-error

在那之后,大多数简单的字段成为这个日期选择器的正常样式接受:输入字段失去了圆角,插件部分保持默认(甚至不是红色)。结合其他领域,这看起来很难看。这怎么能解决?这是此字段的屏幕截图 - http://minus.com/lbeNYx1yXyqk4C

【问题讨论】:

.date 的 CSS 是什么? .date 没有 CSS。我认为这只是一些用于 javascript 事件的服务类。实际上,我用这个 gem github.com/Nerian/bootstrap-datepicker-rails 做日历 .has-error 继续.form-group,因此您的@extend 不起作用;这不是 DOM 中的正确位置。尝试完全杀死 field_with_errors 包装器 div:***.com/a/5268106/3342739 我想过。但在那种情况下,我必须拒绝突出显示字段的内置功能:) 【参考方案1】:

使用以下 css 解决问题

.field_with_errors 
    display: block !important;

.field_with_errors > .datetimepicker 
    display: none !important;

【讨论】:

你从哪里得到.datetimepicker

以上是关于Rails 中的 .field_with_errors 使用插件破坏了 Twitter Bootstrap 3 输入样式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Webpacker 中使用 Rails Url 助手/Rails 5.1 中的 React-rails

Rails 3 中的 Restful API

努力优化 Rails WHERE NOT IN 在 Rails 中的查询

Rails:Rails 中的 POST 422(不可处理实体)?由于路线或控制器?

如何过滤rails中的参数?

Rails:如何为 Rails activerecord 模型中的属性创建默认值? [复制]