1

目前,当出现验证错误时,会在我的表单中呈现divwith :class="field_with_errors"

<form method="post" action="/users" accept-charset="UTF-8">
  <div class="field_with_errors">
    <input id="user_email" type="text" value="tom@test.com" name="user[email]">
  </div>
  <input id="user_password" type="password" value="mypass" size="30" name="user[password]">
  <input id="user_submit" type="submit" value="Submit" name="commit">
</form>

如果不使用额外的 gem,并且在 Rails 3 环境中,有没有办法修改验证错误的呈现方式?例如,我希望在带有错误的标记div之后呈现验证错误:input

<input id="user_email" type="text" value="tom@test.com" name="user[email]"><div class="field_with_errors"></div>

另外,有没有办法呈现特定的错误?如果是电子邮件错误,则div在输入文本框之后呈现并生成“重新输入您的电子邮件”消息。

(到目前为止,我所做的大多数搜索都使用 gems 作为解决方案。)

4

1 回答 1

5

1.您可以通过覆盖来删除 field_with_errors 包装器。ActionView::Base.field_error_proc可以通过将其放入您的config/application.rb

config.action_view.field_error_proc = Proc.new { |html_tag, instance| "#{html_tag}".html_safe }

参考

Rails 3:“field-with-errors”包装器改变了页面外观。如何避免这种情况?

2.您可以在特定字段上显示错误消息。

<input id="user_email" type="text" value="tom@test.com" name="user[email]">
<% if @user.errors.on(:email).present? %>
   <span class="error">Re-enter your email(or)<%= @user.errors.on(:email) %></span>
<% end %>

然后在你的 CSS

.error {
  color: red;
}
于 2012-04-18T05:12:03.850 回答