Как разделить сообщения об ошибках валидации? - PullRequest
0 голосов
/ 30 марта 2012

Rails отображает все сообщения об ошибках формы над формой по умолчанию в ul.Я хочу, чтобы сообщения об ошибках каждого поля отображались рядом с соответствующим полем.

form.html.erb

<%= form_for @product do |f| %>
  <% if @product.errors.any? %>
      <ul id="error_explanation">
      <% @product.errors.each_with_index do |msg, i| %>
        <li><%= msg[1] %></li>
      <% end %>
      </ul>
  <% end %>

  <fieldset>
    <%= f.text_field :title, :placeholder => "Product Title", :title => "Type product title", :autofocus => 'autofocus' %>
    <%= f.text_area :description, :placeholder => "Product Description", :title => "Type product description" %>
    <%= f.collection_select :category_id, Category.all, :id, :name %>
  </fieldset>

  <%= f.submit "Create", :class => "btn btn-big btn-action" %>
  <%= link_to "cancel", categories_path %>
<% end %>

product.rb

class Product < ActiveRecord::Base
  attr_accessible :title, :description, :price, :category_id

  validates :title, :presence => { :message => "All products need a title bro!" }
  validates_uniqueness_of :title

  validates :description, :presence => { :message => "This ain't gonna be too interesting without a description?!" }
  validates :price, :presence => { :message => "How you gonna make money if shit is free?!" }

  belongs_to :category
end

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Используйте Formtastic , он делает это автоматически.

0 голосов
/ 30 марта 2012

Проверьте для каждого поля и поместите элемент ошибки с каждым полем как:

<% if @product.errors.on(:title).present? %>
  <span style="color:RED">WRITE YOUR ERROR MESSAGE</span>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...