यहाँ एक और तरीका है:
यदि आप इस टेम्पलेट का उपयोग करते हैं:
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
आप इस तरह से अपने स्वयं के कस्टम संदेश लिख सकते हैं:
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
इस तरह, अंडरस्कोर के कारण, पूरा संदेश "मेरा कस्टम संदेश" बन जाता है, लेकिन शुरुआत में अतिरिक्त स्थान ध्यान देने योग्य नहीं है। यदि आप वास्तव में शुरुआत में अतिरिक्त स्थान नहीं चाहते हैं, तो केवल .lstrip
विधि जोड़ें ।
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message.lstrip %></li>
<% end %>
</ul>
<% end %>
String.lstrip विधि ': _' द्वारा बनाए गए अतिरिक्त स्थान से छुटकारा पा लेगी और किसी अन्य त्रुटि संदेश को अपरिवर्तित छोड़ देगी।
या इससे भी बेहतर, कुंजी के रूप में अपने कस्टम संदेश के पहले शब्द का उपयोग करें:
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:my, "custom message")
end
end
अब पूर्ण संदेश "मेरा कस्टम संदेश" होगा जिसमें कोई अतिरिक्त स्थान नहीं होगा।
यदि आप चाहते हैं कि "URL खाली नहीं हो सकता" जैसे शब्द से शुरू होने वाला पूरा संदेश नहीं हो सकता है। इसके बजाय कुंजी के रूप में कुछ और शब्द जोड़ने का प्रयास करें:
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:the, "URL can't be blank")
end
end
अब पूरा संदेश "URL रिक्त नहीं हो सकता है"