Rails 3 - получить полное сообщение об ошибке для одного поля - PullRequest
12 голосов
/ 23 марта 2012

У меня есть user.errors, который выдает все ошибки в моем контроллере.Итак, у меня есть поле :user_login, в котором есть свои ошибки.Как я могу получить full сообщения об ошибках от user.errors ТОЛЬКО для этого поля?

Я могу получить только текст этого поля следующим образом:

user.errors[:user_login] # Gives that 'can't be empty'

Но я действительно хочу сделать что-то подобное

user.errors.get_full_message_for_field[:user_login] # 'Your login can't be empty'

Ответы [ 4 ]

22 голосов
/ 30 ноября 2013

Хорошо, я знаю, что этот вопрос был явно опубликован для Rails 3.x полтора года назад, но сейчас в Rails 4.x, похоже, есть тот самый метод, который вы хотели, full_messages_for .

user.errors.full_messages_for(:user_login) #=> return an array
# if you want the first message of all the errors a specific attribute gets,
user.errors.full_messages_for(:user_login).first
# or
user.errors.full_messages_for(:user_login)[0]

Это менее многословно, чем ранее использованное user.errors.full_message(:user_login, user.errors[:user_login].first).

10 голосов
/ 23 марта 2012

Взгляните на full_message здесь:

http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-full_message

Немного многословно, но вы можете сделать что-то вроде:

user.errors.full_message(:user_login, user.errors[:user_login])
2 голосов
/ 25 ноября 2015
We can get the error message of particular field by using

<%= resource.errors.full_messages_for(:email).join("") %>

output : Email cant be blank

If you want to check the particular field has error or not then check it by using

resource.errors.include?(:email)

output : true/false
0 голосов
/ 11 ноября 2014

Вот фрагмент кода для отображения только первой ошибки для каждого поля.

<!-- Display only first error for each field --->
<% entity.attributes.keys.each do |key| %>
    <% if entity.errors.full_messages_for(key.to_sym).length > 0 %>
        <li><%= entity.errors.full_messages_for(key.to_sym).first %></li>
    <% end %>
<% end %>   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...