ruby on rails - validations - mensaje personalizado de validación para rieles 3
rails validates if (4)
Rails ha introducido una nueva forma de validar atributos dentro del modelo. Cuando uso
validates :title, :presence => true
funciona pero cuando trato de agregar un mensaje personalizado
validates :title, :presence => true,:message => "Story title is required"
se genera un error
Unknown validator: ''message''
En realidad, hice esto de una mejor manera. Si desea eliminar el título del campo del mensaje, debe usar esto en su vista _form.htmk.erb:
Como puedes ver dentro de esta vista:
<ul>
<% @article.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
Reemplazar por:
<ul>
<% @article.errors.each_with_index do |msg, i| %>
<li><%= msg[1] %></li>
<% end %>
</ul>
Prueba esto
validates :title, presence: { message: "Story title is required" }
Puede usar HUMANIZED_ATTRIBUTES of rails 3. Por ejemplo en el caso anterior, será como:
HUMANIZED_ATTRIBUTES = {
:title => "story"
}
def self.human_attribute_name(attr, options={})
HUMANIZED_ATTRIBUTES[attr.to_sym] || super
end
Le dará un mensaje de error, reemplazando el título del atributo del modelo con la historia.
Un mensaje personalizado para un booleano con condicionales podría ser:
validates :foo, inclusion: { in: [true, false], message: "cannot be blank" }, if: :bar?