电邮领域:
<label for="job_client_email">Email: </label>
<input type="email" name="job[client_email]" id="job_client_email">
Run Code Online (Sandbox Code Playgroud)
看起来像这样:

但是,如果电子邮件验证失败,它将变为:
<div class="field_with_errors">
<label for="job_client_email">Email: </label>
</div>
<div class="field_with_errors">
<input type="email" value="wrong email" name="job[client_email]" id="job_client_email">
</div>
Run Code Online (Sandbox Code Playgroud)
看起来像这样:

我怎么能避免这种外观变化?
我试图将一些错误添加到导致错误的字段附近的表单,这是我如何做到这一点:
<%= lesson_form.text_field :description %><br />
<% unless @lesson.errors[:description].blank? %>
<span id="error_explanation">
Description <%= @lesson.errors[:description].join(", ") %>
</span>
<% end -%>
<%= lesson_form.label :category %>
<%= lesson_form.text_field :category %><br />
<% unless @lesson.errors[:category].blank? %>
<span id="error_explanation">
Category <%= @lesson.errors[:category].join(", ") %>
</span>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的非重复性方法.正如你所看到的那样,除非每个字段都有错误,否则我会重复相同的操作.