2016-01-29 25 views
0

我試圖破壞數據庫中的記錄,但我得到一個錯誤,我不明白:未定義的方法'ID「0:摧毀長整數時

未定義的方法`ID」爲0:Fixnum對象視圖

這是我的觀點:

<%= form_for(:subject, :url => { :action => 'destroy' , :id => @subject.id }) do %> 
    <h2> Are you sure you want to delete <%= @subject.name %> ? </h2> 
    <div class="form-buttons"> 
    <%= submit_tag("DELETE") %> 
<% end %> 

控制器操作:

def delete 
    @subject = Subject.delete(params[:id]) 
    end 

    def destroy 
    @subject = Subject.delete(params[:id]).destroy 
    redirect_to(:action=> 'index') 
    end 
+0

你可以發佈完整的回溯? – PericlesTheo

+2

對於這兩個操作應該是'find',而不是'delete'。 – potashin

+0

視圖文件的名稱和它附加到哪個動作是什麼? – Pavan

回答

0

控制器操作:

def delete 
    @subject = Subject.find(params[:id]).delete 
end 

def destroy 
    @subject = Subject.find(params[:id]).destroy 
    redirect_to(:action=> 'index') 
end 
0

相反的意見等,你有correct syntax,但有點問題:

def destroy 
    @subject = Subject.delete params[:id] 
    redirect_to :index 
end 

delete行動是Red Herring,應予刪除從控制器(它的語法是正確的,但沒有使用)。

上面的代碼應該的工作。你的錯誤是你在一個不支持它的對象上調用了destroy(一個實例方法)。如果你想使用.destroy,你必須使用它的Subject類的一個實例:

@subject = Subject.find params[:id] 
@subject.destroy 

當你擁有了它在我上面的代碼中,Subject.delete params[:id]方法將工作,因爲它是一個方法。但是,您必須知道.delete不會調用任何回調。