Oto inny sposób:
Jeśli używasz tego szablonu:
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
Możesz napisać własną wiadomość w następujący sposób:
class Thing < ActiveRecord::Base
validate :custom_validation_method_with_message
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:_, "My custom message")
end
end
W ten sposób, z powodu podkreślenia, pełna wiadomość staje się „My custom message”, ale dodatkowa spacja na początku jest niezauważalna. Jeśli naprawdę nie chcesz tej dodatkowej przestrzeni na początku, po prostu dodaj .lstrip
metodę.
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message.lstrip %></li>
<% end %>
</ul>
<% end %>
Metoda String.lstrip pozbywa się dodatkowej przestrzeni utworzonej przez „: _” i pozostawia inne komunikaty o błędach bez zmian.
Lub jeszcze lepiej, użyj pierwszego słowa niestandardowej wiadomości jako klucza:
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:my, "custom message")
end
end
Teraz pełna wiadomość będzie „Moja niestandardowa wiadomość” bez dodatkowego miejsca.
Jeśli chcesz, aby cała wiadomość zaczynała się od wielkiej litery, takiej jak „URL nie może być pusty”, nie można tego zrobić. Zamiast tego spróbuj dodać inne słowo jako klucz:
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:the, "URL can't be blank")
end
end
Teraz pełna wiadomość będzie „URL nie może być pusty”