У меня есть эта форма для создания и обновления моего объекта продукта, но у меня возникают проблемы с получением сообщений об ошибках:
<%= simple_form_for @product do |f| %>
<% if @product.errors.any? %>
<div class="errors-container">
<ul>
<% @product.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.input :name, label: 'Product name' %>
<%= f.input :description, label: 'Description' %>
<%= f.association :category, label: 'Category' %>
<%= f.input :price, label: 'Price' %>
<%= f.input :picture %>
<%= f.input :picture_cache, as: :hidden %>
<%= f.button :submit %>
<% end %>
и эти проверки в моей модели продукта:
validates :name, :description, :category, :price, presence: true
это мой контроллер:
class ProductsController < ApplicationController
before_action :set_product, only: [:show, :edit, :update, :destroy]
skip_before_action :authenticate_user!, only: [:index, :show]
def index
end
def show
end
def new
@product = Product.new
end
def edit
end
def create
@product = current_user.products.new(product_params)
if @product.save
respond_to do |format|
format.html { redirect_to products_path, notice: 'The product was successfully created.' }
end
else
redirect_to new_product_path
end
end
def update
@product.update(product_params)
respond_to do |format|
format.html { redirect_to product_path, notice: 'The product was successfully updated.' }
end
end
def destroy
@product.destroy
respond_to do |format|
format.html { redirect_to products_path, notice: 'The product was successfully destroyed.' }
end
end
private
def set_product
@product = Product.find(params[:id])
end
def product_params
params.require(:product).permit(:name, :description, :category_id, :price, :picture, :picture_cache)
end
end
когда я отправляю форму без поля, обязательного для проверки, я не получаю никаких сообщений об ошибках.Где я делаю не так?ОБНОВЛЕНИЕ: я поставил свой контроллер.