Ini cara lain:
Jika Anda menggunakan templat ini:
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
Anda dapat menulis sendiri pesan khusus seperti ini:
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
Dengan cara ini, karena garis bawah, pesan lengkap menjadi "Pesan khusus saya", tetapi ruang ekstra pada awalnya tidak terlalu mencolok. Jika Anda benar-benar tidak menginginkan ruang ekstra di awal, cukup tambahkan .lstrip
metode ini.
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message.lstrip %></li>
<% end %>
</ul>
<% end %>
Metode String.lstrip akan menghilangkan ruang ekstra yang dibuat oleh ': _' dan akan membiarkan pesan kesalahan lainnya tidak berubah.
Atau bahkan lebih baik, gunakan kata pertama dari pesan khusus Anda sebagai kuncinya:
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:my, "custom message")
end
end
Sekarang pesan lengkapnya adalah "Pesan khusus saya" tanpa ruang tambahan.
Jika Anda ingin pesan lengkap dimulai dengan kata dengan huruf besar seperti "URL tidak boleh kosong" tidak dapat dilakukan. Alih-alih mencoba menambahkan beberapa kata lain sebagai kuncinya:
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:the, "URL can't be blank")
end
end
Sekarang pesan lengkapnya adalah "URL tidak boleh kosong"