我正在使用默认的rails验证,它会在有错误的字段中生成一个周围的红框。
所以,在帖子之后,这样的代码:
<input id="post_date" name="post[date]" type="text">
会变成这样:
<div class="field_with_errors">
<input id="post_date" name="post[date]" type="text">
</div>
所以,使用简单的CSS我们可以设置一个红色边框:
.field_with_errors input{border: 1px red}
当我在表单中放入自动填充字段时,我的问题就开始了。要将“id”值发送到服务器并在字段中显示“name”值,我会为id创建一个隐藏字段,如下所示:
<p>
<%= f.label :user %>
<%= f.hidden_field :user_id%>
<%= text_field_tag :user %>
</p>
“text_field_tag”是我的自动填充功能:
$("input#user").autocomplete({...});
隐藏字段将携带服务器帖子的ID。
在此之后,如果此字段有错误(如需要),Rails不会使用神奇的div元素包围任何一个。
有任何线索吗? 感谢。
答案 0 :(得分:1)
您需要使用form-helper才能获得错误突出显示。因此,如果您的验证所在,则需要f.text_field :user
。
答案 1 :(得分:0)
你可以这样做:
<div class="<%= object.errors[:user].present? ? 'field_with_errors' : '' %>">
Your text_field_tag with autocomplete
</div>
示例:
<div class="<%= object.errors[:user].present? ? 'field_with_errors' : '' %>">
<%= text_field_tag nil, default, :id => 'user_email_autocomplete', data: {autocomplete_source: User.order(:email).map { |t| {:label => t.email, :value => t.id} }} %>
</div>
<%= f.hidden_field :user_id %>