2011-10-06 21 views
6

Bir Aşağıdaki kod var: üretilenRuby on Rails: Doğrulama hata mesajını nasıl özelleştirebilirim?

validates :name, :presence => true 

Hata mesajı ben ekran mesajı olarak istediğiniz (bu durumda "isim" olarak) "Ad boş olamaz" yerine gerçek öznitelik adını kullanıyor "Kayıt adı boş bırakılamaz". Doğrulamalarda varsayılan iletinin üzerine nasıl yazabilirim? Eklemeye çalıştım: ileti ama işe yaramadı ...

Teşekkürler!

cevap

13

en.yml dosyasında özel anahtarlar olarak tanımladığımız Hatalar üretildiğinde anahtar otomatik olarak kullanılacaktır.

Referans: http://edgeguides.rubyonrails.org/i18n.html#translations-for-active-record-models (Active kayıt Modelleri için 5.1 Çeviriler)

+1

Bunu hiç duymadım. Vay, yeni bir şey öğrendim - güzel cevap! :) –

+0

@ ream88 - ikinci. Gerçekten çok güzel bir cevap, kesinlikle bunu kullanacaktır. Özel hata mesajları için daha önce birkaç aydan fazla bir mücevher kullanmıştım. Mücevher https://github.com/nwise/custom_error_message adresinde barındırılmaktadır. – prasvin

+0

Gelecek okuyucular için, açık değilse, 'en.yml' dosyası' config/locales' içinde yaşar. – GMA

7

Bu hile olacaktır:

validates :name, presence: { message: "Registration name can't be blank" } 

veya eski karma roket sözdizimi sürümü:

activerecord: 
    attributes: 
    model_name: 
     attribute_name1: key1 
     attribute_name2: key2 
       ...... 

Bu:

validates :name, :presence => { :message => "Registration name can't be blank" } 
+0

Ama yine de "İsim Kayıt adı boş bırakılamaz" şeklindeki yorumu görüyorum. İletiden "Ad" kelimesinden kurtulmak istiyorum ... – Mayumi

+0

Ancak bu sorun görünümünüzle ilgilidir. –

+0

Ne demek istiyorsun? – Mayumi

6

Onun biraz geç artık (yaklaşık 35 gün sonra) bu cevap vermek. Yani, bunun için üzgünüm. Ama sadece özel hata mesajları için birkaç aydan fazla bir mücevher kullanmış olduğumu paylaşmak istedim.

Bu eklenti, belirli iletiler için özellik adını atlamanızı sağlar. Tek yapmanız gereken mesajı ‘^’ karakteriyle başlatmak.

Sadece https://github.com/nwise/custom_error_message & o yürüyüşü beri güncelleştirilmiş değil de kontrol ettim. Yani, muhtemelen doğru zamanda kullandım.

ps: yml dosyasındaki özel anahtarları tanımlamanız için yanıtınız daha uygun olsa da.