0

我有一个 Rails 2.3 应用程序。

我目前在我的模型中有以下验证:

validates_presence_of :jobno, :companyname

我有以下控制器:

# POST /kases
# POST /kases.xml
  def create
    @company = Company.find(params[:kase][:company_id])
    @kase = @company.kases.create!(params[:kase])

    respond_to do |format|
        UserMailer.deliver_makeakase("EMAILADDRESS", "Highrise", @kase) if params[:sendtohighrise]
        UserMailer.deliver_makeakaseteam("EMAILADDRESS", "Highrise", @kase) if params[:notify_team_of_creation]
        @kase.delay.create_freeagent_project(current_user) if params[:send_to_freeagent]

        #flash[:notice] = 'Case was successfully created.'
        flash[:notice] = fading_flash_message("Case was successfully created.", 5)
    end  
        format.html { redirect_to(@kase) }
        format.xml  { render :xml => @kase, :status => :created, :location => @kase }
  end

因此,当您尝试创建不包含 jobno 或 companyname 的新记录时,我正确收到以下错误消息:

ActiveRecord::RecordInvalid in KasesController#create
Validation failed: {{errors}}

我已经阅读了恢复能力,但我不确定如何/在哪里使用它。我已经阅读了一些关于拯救表单内容的能力的文件。我试图使表单保持原位 - 输入内容 - 但在表单上显示错误。

我读过的文件之一是这里http://apidock.com/rails/ActiveRecord/RecordInvalid

我不想记录错误,只需告知用户问题所在,以便他们重试。

这可能吗?

谢谢,

丹尼

4

1 回答 1

2
def create
  @company = Company.find(params[:kase][:company_id])
  @kase = @company.kases.new(params[:kase])

  if @kase.save
    UserMailer.deliver_makeakase("EMAILADDRESS", "Highrise", @kase) if params[:sendtohighrise]
    UserMailer.deliver_makeakaseteam("EMAILADDRESS", "Highrise", @kase) if params[:notify_team_of_creation]
    @kase.delay.create_freeagent_project(current_user) if params[:send_to_freeagent]
    redirect_to @kase
  else  
    render :new
  end
end
于 2011-02-21T14:11:51.143 回答