Ruby on Rails - f.error_messages没有出现

时间:2010-04-28 17:26:49

标签: ruby-on-rails

我已经阅读了很多有关此问题的帖子,但我从来没有这样做过。

我的模型看起来像这样:

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-->
...

我做错了什么?

1 个答案:

答案 0 :(得分:5)

您通过在else语句中创建新公告来查杀错误消息。

@announcement = Announcement.new # should be removed

当您致电@announcement.save时,它会将错误存储在@announcement.errors中。通过在此之后调用@announcement = Announcement.new,您将回到一个干净的名单。因此,不会显示任何错误。