Удаление имени поля из сообщения об ошибке проверки
в rails 3 Я не хочу показывать имена полей в сообщениях об ошибках. Кто-нибудь знает, как это сделать?
validates_presence_of :title, :message => "no title"
показывает
Title no title
Я хочу
no title
Ответы
Ответ 1
В форме формы измените свой текущий код
<%@object.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
С помощью этого
<%@object.errors.messages.values.each do |msg| %>
<%msg.each do |m| %>
<li><%= m %></li>
<%end %>
<% end %>
Ответ 2
Это сработало для нас (Rails 4):
<% resource.errors.each do |attr,msg| %>
<li><%= msg %></li>
<% end %>
Ответ 3
module ActiveModel
class Errors
def full_messages
map { |attribute, message|
message
}
end
end
end
Смотрите также: Изменить отображаемое имя столбца в рельсах
Ответ 4
Это работало для меня в Rails 4 (haml):
%ul
- @some_object.errors.messages.each do |message|
%li= message[1][0]
Ответ 5
Если вы измените метку элемента, это приведет к появлению метки сообщения об ошибке. Поэтому, если вы измените его на пустую строку, он отобразит только сообщение:
-# reviews/_form.html.haml
= form_for review do |form|
= form.label :rating, (review.errors[:rating] ? "" : "Rate this Item" )
Ответ 6
Вы можете использовать следующий Gem
https://github.com/jeremydurham/custom-err-msg
Вы можете использовать символ '^' в начале значения сообщения. И после этого будут отображаться только символы.
validates_presence_of :title, :message => "^no title"
Вы также можете использовать следующий Gem
http://www.rubydoc.info/gems/dynamic_form/1.1.4