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!検証が失敗したときに例外を発生させるを使用しています。使用する#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 に答える