validasi pesan khusus untuk rel 3


94

Rails telah memperkenalkan cara baru untuk memvalidasi atribut di dalam model. Saat saya menggunakan

validates :title, :presence => true

itu berfungsi tetapi ketika saya mencoba menambahkan pesan khusus

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

kesalahan terjadi

Unknown validator: 'message'

Jawaban:


196

Coba ini

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

19
Bagaimana cara menghapus: judul dari pesan kesalahan di atas? Di atas ditampilkan sebagai "Judul Cerita Judul diperlukan". Saya ingin "Diperlukan judul cerita". Terima kasih.
datauser

5
Kemana => trueperginya jawaban ini? Apa tidak perlu?
davetapley

2
@dukedave anehnya itu tidak perlu. Anda bisa menyampaikan apa pun yang 'jujur' presence.
membahayakan

1
@NotDan, tautan rusak.
stevenspiel

2
@Mayumi - Anda dapat menghapus nama atribut dari pesan dengan menulis validasi manual dan menambahkan kesalahan ke :base, misalnyaerrors.add(:base, "Story title is required)
Marco Prins

18

Sebenarnya, saya melakukan ini dengan cara yang lebih baik. Jika Anda ingin menghapus judul bidang dari pesan, Anda harus menggunakan ini pada tampilan _form.htmk.erb Anda:

Seperti yang Anda lihat di dalam tampilan ini:

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

Gantikan dengan:

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

Htmk? Mengapa, saya TIDAK PERNAH
Marco Prins

1

Pesan khusus untuk boolean dengan kondisional mungkin adalah:

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

0

Anda dapat menggunakan HUMANIZED_ATTRIBUTES rel 3. Contoh kasus di atas akan seperti ini:

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

Ini akan memberi Anda pesan kesalahan, mengganti judul atribut model dengan cerita.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.