İşte başka bir yol:
Bu şablonu kullanırsanız:
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
Kendi özel mesajınızı şöyle yazabilirsiniz:
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
Bu şekilde, alt çizgi nedeniyle, tam ileti "Özel iletim" olur, ancak başlangıçtaki fazladan boşluk fark edilmez. Başlangıçta bu fazladan alanı gerçekten istemiyorsanız, .lstrip
yöntemi ekleyin .
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message.lstrip %></li>
<% end %>
</ul>
<% end %>
String.lstrip yöntemi ': _' tarafından oluşturulan ekstra alandan kurtulacak ve diğer hata mesajlarını değiştirmeden bırakacaktır.
Daha da iyisi, anahtar olarak özel mesajınızın ilk kelimesini kullanın:
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:my, "custom message")
end
end
Artık mesajın tamamı fazladan boşluk bırakmadan "Özel mesajım" olacak.
Tam iletinin "URL boş olamaz" gibi büyük harfle yazılmış bir kelimeyle başlamasını istiyorsanız, bu yapılamaz. Bunun yerine anahtar olarak başka bir kelime eklemeyi deneyin:
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:the, "URL can't be blank")
end
end
Şimdi iletinin tamamı "URL boş olamaz" olacaktır