2011-09-19 61 views
0

在這裏與更新不ID錯誤是一段代碼:在控制器

def update 
    @category = Category.find(params[:id]) 

    if @category.update_attributes(params[:category], :as => :roles_update) 
     @category = Category.find[params[:id]] 
     render 'show', :notice => 'Category was successfully updated' 
    else 
     @categories = Category.all 
     render 'index' 
    end 
    end 

和錯誤執行上述時:

Couldn't find Category without an ID 

然而有類別ID(= 1)在參數轉儲:

{"utf8"=>"✓", 
"_method"=>"put", 
"authenticity_token"=>"aFk+bcHKA3zwck1PgrNOwVvZfeXtsT57ywHGiB4odDY=", 
"category"=>{"description"=>"audio/video", 
"active"=>"1"}, 
"commit"=>"Update Category", 
"id"=>"1"} 

的代碼就沒有錯誤,如果註釋掉#@類= Category.find [PARAMS [:編號]在IF循環。但rspect會給出錯誤:ActiveRecord :: RecordNotFound:

有關此問題的任何建議?感謝

+2

可能是此行:'@Category = Category.find [PARAMS [:ID]]'。應該使用圓括號:'@category = Category.find(params [:id])''。 – Alex

+0

方括號肯定會成爲問題。你也可以通過編寫'@ category.reload'而不是'@category = Category.find(params [:id])'(line 5)來簡化你的代碼。 –

+0

得到一個nil.reload錯誤,說「評估錯誤nil.reload」。這裏是編輯方法:def edit @category = Category.find(params [:id]) end – user938363

回答

1
@category = Category.find[params[:id]] 

應該是:

@category = Category.find(params[:id]) 
+0

是的,它應該是()。但是,在更新def後,rspec仍然停留在第一個@category = Category.find(params [:id])的「ActiveRecord :: RecordNotFound: 無法找到沒有ID的類別」。謝謝。 – user938363