如何一一显示设计错误消息

时间:2018-10-31 17:01:03

标签: ruby-on-rails ruby validation error-handling devise

我正在编写一个应用程序,并且正在使用devise进行注册和登录。

我现在正在验证注册表单字段,并且可以使用“ <%= devise_error_messages!%>”来检查并显示“未验证”数据。

问题是我不想在同一个div中显示所有错误,我想将错误1放在一个div中,将错误2放在另一个div中,依此类推。

例如:如果用户插入一个已经采用的用户名并将电子邮件字段保留为空,我想显示:

  1. 靠近用户名字段的“已使用用户名”
  2. 靠近电子邮件字段的“电子邮件不能为空”

谢谢

2 个答案:

答案 0 :(得分:1)

您始终可以遍历资源中的错误。

因此,如果您的外观与此相似:

<%= form_for(resource, :as => resource_name, :url => registration_path(...

您可以简单地在资源中获取错误并显示它们,如下所示:

<% resource.errors.full_messages.each do |msg| %>
  <div><%= msg %></div>
<% end %>

errors.full_messages-将为您提供一个带有可显示给用户的漂亮错误消息的数组。

答案 1 :(得分:0)

我解决了这个问题,从而创建了一个初始化器

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|   unless html_tag 
=~ /^<label/
    %{<div class="field_with_errors">#{html_tag}<label for="#{instance.send(:tag_id)}" 
class="message">#{instance.error_message.first}</label></div>}.html_safe else
    %{<div class="field_with_errors">#{html_tag}</div>}.html_safe   end end

这给了我我想要的确切结果。

Result

感谢您的帮助! :)