0

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

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

请任何人告诉我为什么它没有显示错误消息。

4

2 回答 2

2

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

def create
  if @user.save
    redirect_to @user, notice: 'Created!'
  else
    render :new
  end
于 2013-02-07T05:00:31.053 回答
0

保存!

def create
  unless @user.save
     render :action => :new
  end
end
于 2013-02-07T05:15:01.407 回答