2011-07-09 92 views
2

每次我刪除或銷燬的產品是贈品給我這個錯誤在我的控制檯:找不到「對象」與ID = ActiveRecord的:: RecordNotFound

ActiveRecord::RecordNotFound (Couldn't find Product with ID=4): 
    app/controllers/products_controller.rb:16:in `show' 

,並在頁面上它給:

ActiveRecord::RecordNotFound in ProductsController#show 

Couldn't find Product with ID=4 

對我的產品控制器我只是普通支架:

def show 
    @product = Product.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @product } 
    end 
    end 

def destroy 
    @product = current_user.products.find(params[:id]) #current user deletes own 
    @product.destroy 

    respond_to do |format| 
     format.html { redirect_to(products_url) } 
     format.xml { head :ok } 
    end 
    end 

我用Rails Jquery的UJS和RAI ls-jquery並在我的應用程序佈局中有csrf_meta_tag。我注意到的是,當我點擊銷燬鏈接並彈出窗口並說「你確定」時,我點擊確定按鈕,它會因爲一些奇怪的原因而閃爍TWICE,直到我安裝了Jquery纔會這樣做。我該如何解決?

編輯 - 答:

重新安裝導軌jQuery的UJS>https://github.com/rails/jquery-ujs

你必須保持兩個文件jquery.min.jsjquery.js。我刪除了jquery.min.js,因爲我認爲這是一個最小化的版本,但顯然不是,這裏有我的所有文件從jQuery的UJS:

jquery.js 
    jquery.min.js 
    jquery_ujs.js 
    rails.js # i had to install this manually from the link (or zip file) 
    jquery-ui # i wanted the user interface too 
+0

你可以發佈型號代碼嗎?如果它很大,你可以在Github上添加一個鏈接。同樣可以看到application.js。 – Midwire

+0

它的完成,我的application.js是空的,我還沒有使用它。 – LearningRoR

+0

您是否最近從現有應用程序升級到3.1 rc?如果是這樣,我會確保你已經卸載了所有舊的prototype.js文件。 –

回答

1

確保您在javascriptsrails.js文件?當你從原型移動到jquery時,標準的寧靜DELETE不能正常工作了。 rails.js修復了這個問題,所以它可以正常工作。你可以參考Josh Huckabee的文章:http://joshhuckabee.com/jquery-rails-3。希望有幫助。

PS:另外請確保在您的佈局中包含rails.js。類似這樣的:

<%= javascript_include_tag 'jquery-1.4.4.min', 'jquery-ui-1.8.7.custom.min', 'rails', 'application' %> 
+0

我剛下載了新的rails.js,仍然沒有運氣。我已經啓用了所有樣式表和javasheets(<%= javascript_include_tag:all,:cache => true,:recursive => true%>),但即使正確檢測到它仍然沒有效果。我認爲它有什麼與它重定向到產品/ ID當我剛剛刪除產品,我將如何改變這一點? – LearningRoR

+1

如果確實是重定向,你可以通過'ruby-debug'找到,或者你可以在'destroy'方法中設置一個日誌語句:'logger.debug(caller)',以及你認爲它發生的任何地方。如果它正在被重定向,你應該能夠看到,並從那裏被調用。 – Midwire

+1

另外,你安裝jquery時刪除了原型嗎?你有沒有遵循這些相同的步驟:http://stackoverflow.com/questions/5053280/how-to-use-jquery-instead-of-prototype-in​​-a-rails-3-application – Midwire

1

該錯誤消息說,你正在努力尋找一個product在您的show操作中使用id 4。這裏有兩個問題。首先,除非您的產品ID確實是4,否則您可能從params[:id]獲得nil。另一個問題是您正在執行show操作,而不是您的delete操作。這意味着您的路由不正確,或者http動詞正在從DELETE更改爲GET

閃爍兩次可能是一個相關的症狀,但一些如何不發送DELETEparams散列沒有被傳遞。

+0

當我在我的產品/索引中時,我會將其刪除,就像它說「顯示,編輯,銷燬」的常規腳手架一樣。在我的數據庫中,它也說明它是正確的產品,我相信當它停留在索引頁面時,它將重定向到錯誤的位置。 – LearningRoR

相關問題