Goa*_*lie 1 validation ruby-on-rails
目前,当存在验证错误时,将在我的表单中呈现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>
Run Code Online (Sandbox Code Playgroud)
如果不使用额外的gem并在Rails 3环境中,有没有办法修改验证错误的呈现方式?例如,我希望在带有错误div的input标记之后呈现验证错误:
<input id="user_email" type="text" value="tom@test.com" name="user[email]"><div class="field_with_errors"></div>
Run Code Online (Sandbox Code Playgroud)
另外,有没有办法呈现特定的错误?如果是电子邮件错误,则div在输入文本框之后呈现并生成"重新输入您的电子邮件"消息.
(到目前为止,我所做的大多数搜索都使用gems作为解决方案.)
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 }
Run Code Online (Sandbox Code Playgroud)
参考
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 %>
Run Code Online (Sandbox Code Playgroud)
然后在你的CSS中
.error {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |