rails中的error_messages未显示

时间:2013-02-07 04:59:08

标签: ruby-on-rails ruby-on-rails-3

在我的用户控制器中,我有新的并创建动作..

def new
 @user = User.new
end
def create
  @user.save!
end

我的new.html.haml是..

 - form_for @user do |f|
  = f.error_messages
  = label_tag "User Name"
  = f.text_field :user_name
  %br
  = submit_tag 'Add', :disable_with => "Creating…"

User.rb(型号)

validates_uniqueness_of  :config_name

但是,如果我点击已在文本字段中取值的提交按钮,则不会显示错误消息。但抛出异常。

 ActiveRecord::RecordInvalid in UsersController#create

    Validation failed: has already been taken

请任何人告诉我为什么不发送错误消息。

2 个答案:

答案 0 :(得分:2)

您正在使用#save!,在验证失败时会引发异常。您应该使用#save或仍然使用#save!,但将其包装在救援区内。

def create
  if @user.save
    redirect_to @user, notice: 'Created!'
  else
    render :new
  end

答案 1 :(得分:0)

请参阅save!

def create
  unless @user.save
     render :action => :new
  end
end