Используйте вспомогательный метод:
def errors_for(model, attribute)
if model.errors[attribute].present?
content_tag :span, :class => 'error_explanation' do
model.errors[attribute].join(", ")
end
end
end
А в виду:
<%= lesson_form.text_field :description %><br />
<%= errors_for @lesson, :description %>
<%= lesson_form.label :category %>
<%= lesson_form.text_field :category %><br />
<%= errors_for @lesson, :category %>
<% end %>
Или вы можете использовать simple_form , который сделает все это для вас так:
<%= simple_form_for @lesson do |f| %>
<%= f.input :description %>
<%= f.input :category %>
<%= f.button :submit %>
<% end %>
И если вы используете simple_form и haml , все выглядит немного лучше:
= simple_form_for @lesson do |f|
= f.input :description
= f.input :category
= f.button :submit
Приведенное выше сообщение покажет ошибку рядом с полем, определит тип атрибута и покажет соответствующее поле ввода (например, текст, пароль, флажок и т. Д.), Все в одну простую строку f.input
.