niestandardowy komunikat dotyczący walidacji dla szyn 3

94

Railsy wprowadziły nowy sposób sprawdzania poprawności atrybutów w modelu. Kiedy używam

validates :title, :presence => true

działa, ale kiedy próbuję dodać własną wiadomość

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

generowany jest błąd

Unknown validator: 'message'
Prabesh Shrestha
źródło

Odpowiedzi:

196

Spróbuj tego

validates :title, presence: { message: "Story title is required" }
Shiv
źródło
19
Jak usunąć: title z powyższego komunikatu o błędzie? Powyżej wyświetla się informacja „Tytuł opowieści jest wymagany”. Chcę „Wymagany jest tytuł historii”. Dzięki.
datauser
5
Gdzie => truepodziała się ta odpowiedź? Czy to nie jest konieczne?
davetapley
2
@dukedave, co dziwne, nie jest to konieczne. Możesz przekazać wszystko „prawdziwe” presence.
krzywda
1
@NotDan, link uszkodzony.
stevenspiel
2
@Mayumi - Możesz usunąć nazwę atrybutu z wiadomości, pisząc ręczną weryfikację i dodając błąd :base, na przykładerrors.add(:base, "Story title is required)
Marco Prins
18

Właściwie zrobiłem to w lepszy sposób. Jeśli chcesz usunąć tytuł pola z wiadomości, powinieneś użyć tego w swoim widoku _form.htmk.erb:

Jak widać w tym widoku:

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

Zastąp go:

<ul>
  <% @article.errors.each_with_index do |msg, i| %>
  <li><%= msg[1] %></li>
  <% end %>
</ul>
Mateusgf
źródło
Htmk? Dlaczego, NIGDY bym nie
Marco Prins
1

Niestandardowy komunikat dla wartości logicznej z warunkami warunkowymi może wyglądać następująco:

validates :foo,  inclusion: { in: [true, false], message: "cannot be blank" }, if: :bar?
stevenspiel
źródło
0

Możesz użyć HUMANIZED_ATTRIBUTES szyn 3. Na przykład w powyższym przypadku będzie to wyglądać następująco:

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

Wyświetli komunikat o błędzie, zastępując tytuł atrybutu modelu historią.

Shyamkkhadka
źródło