Я бы, наверное, сделал что-то подобное. Используйте пустую модель в действии: новый, как это:
def new
@category = Category.new
end
А затем используйте form_for вместо form_tag следующим образом:
<%= form_for @category, :action=>'create' do |f| %>
<%= f.text_field(:title, :class=>'') %>
А затем в действии: создать, я бы попробовал это:
if @category.save
# redirect if you want to
else
render :action => :new
end
Таким образом, если по какой-либо причине создание завершится неудачно, контроллер отобразит шаблон для: new, но все еще будет использовать объект с ошибкой @category в помощнике form_for. И вы всегда можете получить доступ к сообщениям об ошибках модели с помощью @ category.errors.on (: title)
Поэтому добавьте следующее к представлению, в котором вы хотите отобразить сообщение об ошибке:
<%= @category.errors.on(:title) unless @category.errors.on(:title).nil? %>