如何在<%= f.error_messages%>中显示错误消息在您的控制器中使用救援ActiveRecord :: RecordInvalid

时间:2011-07-28 13:53:45

标签: ruby-on-rails

user_controller.rb

def create
  @user = User.new(params[:user])
  @company = Company.new(params[:company])
  [@company,@user].each {|ins|
      raise ActiveRecord::RecordInvalid.new(ins) unless ins.valid?
    }
  User.transaction do
   @company.save!
   @user.company = @company
   @user.save!   
  end
  rescue ActiveRecord::RecordInvalid          
          render :action => 'new'
end

我没有通过<%= f.error_messages%>获取错误消息 请帮助!!

1 个答案:

答案 0 :(得分:4)

解决方案:

在您的公司模式中:

 accepts_nested_attributes_for :user

在您的控制器中:

def create
  @company = Company.new(params[:company].merge(:user_attributes => params[:user])
  if @company.save
    #what you want
  else
    @user = @company.user          
    render :action => 'new'
  end
end