रेल के लिए सत्यापन कस्टम संदेश 3


94

रेल ने मॉडल के अंदर विशेषताओं को मान्य करने का नया तरीका पेश किया है। जब मैं उपयोग करता हूं

validates :title, :presence => true

यह काम करता है लेकिन जब मैं एक कस्टम संदेश जोड़ने की कोशिश करता हूं

validates :title, :presence => true,:message => "Story title is required"

एक त्रुटि उत्पन्न होती है

Unknown validator: 'message'

जवाबों:


196

इसे इस्तेमाल करे

validates :title, presence: { message: "Story title is required" }

19
मैं कैसे निकालूँ: शीर्षक त्रुटि संदेश से ऊपर? "शीर्षक कहानी शीर्षक आवश्यक है" के रूप में ऊपर प्रदर्शित होता है। मैं चाहता हूं कि "कहानी शीर्षक की आवश्यकता है।" धन्यवाद।
डेटासर

5
=> trueइस जवाब में कहां गया है? क्या यह आवश्यक नहीं है?
davetapley

2
@dukedave काफी हद तक यह आवश्यक नहीं है। आप कुछ भी 'सत्य' पास कर सकते हैं presence
नुकसान

1
@NotDan, लिंक टूटा।
स्टीवंसपिल

2
@ मैयुमी - आप संदेश को एक मैनुअल सत्यापन लिखकर और त्रुटि को जोड़कर विशेषता नाम हटा सकते हैं :base, उदाहरण के लिएerrors.add(:base, "Story title is required)
मार्को प्रिन्स

18

दरअसल, मैंने यह बेहतर तरीके से किया। यदि आप मैसेज से फील्ड टाइटल हटाना चाहते हैं तो आपको अपने _form.htmk.erb दृश्य पर इसका उपयोग करना चाहिए:

जैसा कि आप इस दृश्य के अंदर देख सकते हैं:

<ul>
  <% @article.errors.full_messages.each do |msg| %>
  <li><%= msg %></li>
  <% end %>
</ul>

इसे बदलें:

<ul>
  <% @article.errors.each_with_index do |msg, i| %>
  <li><%= msg[1] %></li>
  <% end %>
</ul>

Htmk? क्यों, मैं कभी नहीं
Marco Prins

1

सशर्त के साथ एक बूलियन के लिए एक कस्टम संदेश हो सकता है:

validates :foo,  inclusion: { in: [true, false], message: "cannot be blank" }, if: :bar?

0

आप रेल के HUMANIZED_ATTRIBUTES 3 का उपयोग कर सकते हैं। उपरोक्त मामले में उदाहरण के लिए, यह इस प्रकार होगा:

HUMANIZED_ATTRIBUTES = {
:title => "story"
}
 def self.human_attribute_name(attr, options={})
    HUMANIZED_ATTRIBUTES[attr.to_sym] || super
end

यह आपको कहानी के साथ मॉडल विशेषता शीर्षक की जगह, त्रुटि संदेश देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.