【问题标题】:Rails add div to form fields which pass validation, like "fields_with_errors" div on failureRails 将 div 添加到通过验证的表单字段中,例如失败时的“field_with_errors”div
【发布时间】:2016-05-20 17:05:46
【问题描述】:

我想将样式应用于成功验证的字段以及失败的字段

我正在使用 fields_with_errors div,它应用于验证失败的表单元素。我想将此行为扩展到在成功验证的字段周围应用 fields_without_errors 样式的 div。

例如当 rails 验证字段时,渲染视图返回如下:

<div class="field_with_errors"><input class="input" size="30" type="text" value="" name="seller_profile[business_phone_number]" id="seller_profile_business_phone_number"></div>

原来的erb代码是:

<div class="row">
        <label for="telephone">Company telephone</label>
        <br />
       <%=f.text_field :business_phone_number, :class=>"input", size:"30" %>
        <div class="errors">
        <%if @profile.errors[:business_phone_number].any? %>
        Phone number <%= @profile.errors[:business_phone_number].join(", ")%>
        <% end %>
        </div>
        <br />
      </div>

这很好用。但是,对于已通过验证的字段,它们不会被包裹在 div 中,说明验证已通过。

我希望通过验证的字段如下所示:

 <div class="field_without_errors"><input class="input" size="30" type="text" value="" name="seller_profile[business_description]" id="seller_profile_business_description"></div>

即它们被包装在一个带有“field_without_errors”类的 div 中。我有没有办法在 rails 中添加这种行为?

【问题讨论】:

  • 定义简单。您必须找到一种方法来区分成功验证的字段和尚未验证的字段。而且您可能必须重写表单构建器类以不同方式处理成功验证的字段。
  • 你也许可以用 css 做到这一点。请在您的问题中添加一个呈现出的 html 示例,该示例适用于混合了有效和无效输入的表单。如果rails添加的表单周围有一个div,带有错误类或其他内容,请确保包含它。
  • 更新问题....

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


【解决方案1】:

我会用 css 来做这个:确保如果你为一个已经过验证测试的对象渲染一个表单,你向表单添加一个类,例如“已验证”。 Rails 可能已经这样做了。

然后,您可以为此类中的表单中未通过验证的字段添加样式规则(即具有由 rails 添加的错误类)(或者只是坚持使用 rails 自己的默认规则),并覆盖这些规则没有错误类的输入:这些规则将应用于没有失败的输入。

【讨论】:

  • 这里的重点是 Max,rails 没有标记正确验证的字段。当然,从样式的角度来看,CSS 是答案——但这不是问题所在。问题是如何让rails在通过验证的字段周围添加一个带有类的标签。
  • 不,问题询问如何“应用样式”,并且标题只是说“突出显示”。将样式应用于元素并不一定要求该元素具有特定的类,因为规则会相互覆盖。如果您希望问题是关于如何添加类,那么将问题更改为询问如何执行此操作,而不是如何设置元素的样式。它们不是一回事。
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多