【问题标题】:Custom validation error messages for rails and their location?导轨及其位置的自定义验证错误消息?
【发布时间】:2014-08-20 18:59:40
【问题描述】:

我想为我拥有的每个验证显示一条自定义错误消息,我已经完成了这个但不是全部。

validates :first_name, presence: {message: "No escribistes tu nombre."}
validates :last_name, presence: {message: "No escribistes tu apellido."}
validates :mobile_phone, presence: { message: "No escribistes tu número de teléfono celular."}
validates :mobile_phone, length: { minimum: 10, message: "Número de celular debe contener mas de 10 números." }

这很好用,只是它总是显示在错误消息之前:

FIRST NAME NO ESCRIBISTES TU NOMBRE.
LAST NAME NO ESCRIBISTES TU APELLIDO.
MOBILE PHONE NO ESCRIBISTES TU NÚMERO DE TELÉFONO CELULAR.
MOBILE PHONE NÚMERO DE CELULAR DEBE CONTENER MAS DE 10 NÚMEROS.

如何去掉自定义错误消息之前写的第一个FIRST NAME, LAST NAME, MOBILE PHONE, MOBILE PHONE

另外,我想知道如何将first_name 的错误消息放在名字字段下?

这是我目前拥有的:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<!--<%= devise_error_messages! %>-->
<% if @user.errors.any? %>
    <% @user.errors.full_messages.each do |msg| %>
        <div class="alert alert-danger"><%= msg %></div>
    <% end %>
<% end %>

<div>
  <%= f.text_field :first_name, autofocus: true, placeholder: 'Nombre' %>
  <%= f.text_field :last_name, placeholder: 'Apellido' %>
</div>
<div class="m-t">
  <%= f.telephone_field :mobile_phone, placeholder: '787-878-7878' %>
</div>
<div><%= f.submit "SIGN UP", class: 'custom-input-2 m-t' %></div>
<% end %>

如何摆脱错误列表,而只在其特定字段下显示错误。

谢谢。

【问题讨论】:

标签: ruby-on-rails validation messages


【解决方案1】:

将您的表单错误块更改为此:

<% if @user.errors.any? %>
  <% @user.errors.messages.each do |msg| %>
    <div class="alert alert-danger"><%= msg %></div>
  <% end %>
<% end %>

在 locals/en.yml 中更改:

# config/locales/en.yml
en:
  activerecord:
    attributes:
      user:
        email: "E-mail address"
    errors:
      models:
        user:
          attributes:
            first_name:
              blank: "is required"

由于 en.yml 用于英语,因此您必须为您的语言创建另一个 .yml 文件,它还可以通过使您的应用国际化来帮助您。详情查看Rails Internationalization

【讨论】:

【解决方案2】:

根据 Nitin 的评论,我能够进行一些修改,我添加了以下内容:

<div>
  <%= raw @user.errors[:first_name].join + ("&nbsp")%>
  <%= @user.errors[:last_name].join %>
  <%= f.text_field :first_name, autofocus: true, placeholder: 'Nombre' %>
  <%= f.text_field :last_name, placeholder: 'Apellido' %>
</div>

这将显示特定变量的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多