我已经阅读了很多有关此问题的帖子,但我从来没有这样做过。
我的模型看起来像这样:
class Announcement < ActiveRecord::Base
validates_presence_of :title, :description
end
我的控制器的创建方法(仅与其相关部分)如下所示:
def create
respond_to do |format|
if @announcement.save
flash[:notice] = 'Announcement was successfully created.'
format.html { redirect_to(@announcement) }
format.xml { render :xml => @announcement, :status => :created, :location => @announcement }
else
@announcement = Announcement.new
@provinces = Province.all
@types = AnnouncementType.all
@categories = Tag.find_by_sql 'select * from tags where parent_id=0 order by name asc'
@subcategories= ''
format.html { render :action => "new" } #new_announcement_path
format.xml { render :xml => @announcement.errors, :status => :unprocessable_entity }
end
end
end
我的表单如下:
<% form_for(@announcement) do |f| %>
<%= error_messages_for 'announcement' %> <!--I've also treid f.error_messages-->
...
我做错了什么?
答案 0 :(得分:5)
您通过在else语句中创建新公告来查杀错误消息。
@announcement = Announcement.new # should be removed
当您致电@announcement.save
时,它会将错误存储在@announcement.errors
中。通过在此之后调用@announcement = Announcement.new
,您将回到一个干净的名单。因此,不会显示任何错误。