簡體   English   中英

rails 3,腳手架應用程序,如何添加自己的錯誤信息來更新方法?

[英]rails 3, scaffolded app, how add own error message to update method?

在腳手架的Rails 3中,當'update'方法無法保存時,邏輯已經存在,可以重定向回編輯頁面。

我們修改了腳手架方法以執行一些自定義驗證邏輯(在更新之后,但在渲染結果視圖之前

respond_to do |format|
  if @thingy.update_attributes(params[:thingy])
      if @thingy.found_warning_101

           WHAT GOES "HERE" TO REDIRECT TO EDIT PAGE
           AND HAVE THE DEFAULT SCAFFOLDING ERROR HANDLING SHOW "WARNING 101"?
           THIS DOES NOT WORK, GIVES MISSING VIEW ERROR, DOESNT FIND EDIT VIEW:

           format.html { render :action => "edit", :notice => "WARNING 101" }
           format.xml  { render :xml => @things.errors, :status => :unprocessable_entity }
           return

      end

    format.html { redirect_to(@thingy, :notice => "thingy was successfully updated.") }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @beep.errors, :status => :unprocessable_entity }
  end

我們嘗試(上文)簡單地復制了腳手架創建的相同代碼,以防.update_attributes失敗(后跟return),但是我們得到了一個缺失的視圖錯誤:

Missing template thingys/update with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml, :haml, :voice], :formats=>[:html], :locale=>[:en, :en]} in view paths 

我真的不明白為什么要這么做,這是實現它的方法:

@thingy.errors[:base] << "whatever text you want"

當然在您的控制器中。

順便說一句,缺少的模板似乎是update ,而不是edit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM