目前,当出现验证错误时,div
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作为解决方案。)
答案 0 :(得分:5)
1.您可以通过覆盖ActionView::Base.field_error_proc
删除field_with_errors包装。可以通过将其放入config/application.rb
:
config.action_view.field_error_proc = Proc.new { |html_tag, instance| "#{html_tag}".html_safe }
参见
Rails 3: "field-with-errors" wrapper changes the page appearance. How to avoid this?
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;
}