2011-03-22 3 views
87

Raylar, model içindeki özellikleri doğrulamak için yeni bir yol sunmuştur. Ben çalıştığınıraylar için özel doğrulama mesajı 3

validates :title, :presence => true 

kullanın ama özel bir mesaj eklemeye çalıştığınızda

bir hata oluşturulur
validates :title, :presence => true,:message => "Story title is required" 

Unknown validator: 'message' 

cevap

183

Aslında bu

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

nasıl kaldırırım? Yukarıdaki "Başlık Hikayesi başlığı gerekli" olarak görüntülenir. "Hikaye başlığı gerekiyor" istiyorum. Teşekkürler. – Mayumi

+5

Bu cevapta '=> true' nereye gitti? Gerekli değil mi? – dukedave

+2

@dukedave garip bir şekilde gerekli değildir. 'Doğruluk' bir şeyden 'varlığa' geçebilirsiniz. – harm

18

çalıştığınızda , Bunu ben yaptım daha iyi bir şekilde. Eğer _form.htmk.erb görünümde bu kullanmalıdır mesajdan saha başlığını kaldırmak istiyorsanız:

bu görünüm içinde görebileceğiniz gibi:

:

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

tarafından değiştirin

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

Htmk Neden, ben asla –

0

Rayların HUMANIZED_ATTRIBUTES 3'ünü kullanabilirsiniz. Bu hikaye ile modeli niteliği başlığını değiştirerek, mesajı hata verecektir

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

: gibi Yukarıdaki durumda Örneğin, öyle olacak.

1

Koşullamalar bir boole'ye yönelik bir özel ileti olabilir: Yukarıdaki hata mesajından başlığı:

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