raylar için doğrulama özel mesajı 3


94

Rails, model içindeki öznitelikleri doğrulamanın yeni bir yolunu tanıttı. Kullandığım zaman

validates :title, :presence => true

çalışıyor ama özel bir mesaj eklemeye çalıştığımda

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

bir hata üretildi

Unknown validator: 'message'

Yanıtlar:


197

Bunu dene

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

19
Yukarıdaki hata mesajından: başlığını nasıl kaldırırım? Yukarıda, "Başlık Hikayesi başlığı gerekli" olarak görüntülenir. "Hikaye başlığı gerekli" istiyorum. Teşekkürler.
veri kullanıcısı

5
=> trueBu cevapta nereye gitti? Gerekli değil mi?
davetapley

2
@dukedave garip bir şekilde gerekli değil. 'Doğru' olan her şeyi iletebilirsiniz presence.
zarar

1
@NotDan, bağlantı bozuk.
stevenspiel

2
@Mayumi - El ile doğrulama yazıp hatayı ekleyerek öznitelik adını mesajdan kaldırabilirsiniz, :baseörneğinerrors.add(:base, "Story title is required)
Marco Prins

18

Aslında bunu daha iyi bir şekilde yaptım. Alan başlığını mesajdan kaldırmak istiyorsanız, bunu _form.htmk.erb görünümünüzde kullanmalısınız:

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

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

Şununla değiştirin:

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

Htmk? Neden, ASLA
Marco Prins

1

Koşullu bir boole için özel bir mesaj şöyle olabilir:

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

0

HUMANIZED_ATTRIBUTES rayı kullanabilirsiniz 3. Örneğin yukarıdaki durumda şöyle olacaktır:

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

Model öznitelik başlığını story ile değiştirerek size hata mesajı verecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.