2011-03-29 72 views
2

因爲,我是新來的鐵軌,所以我想知道一個小功能。 我在我的rails 3應用程序中有一個報告模型(不是通過腳手架)。我通過ajax功能逐個顯示報告。我想爲每個報告添加一個刪除鏈接。我也在我的控制器中創建了銷燬方法。現在,當我點擊特定報告的刪除鏈接時,我不知道如何刪除特定報告。 這裏是我的控制器代碼: -如何從模型中刪除軌道中的特定帖子?

class ReportsController < ApplicationController 
    def index 
    @reports = Report.all(:order => "created_at DESC") 
    respond_to do |format| 
     format.html 
    end 
    end 

    def create 
    @report = Report.create(:description => params[:description]) 
    respond_to do |format| 
     if @report.save 
     format.html { redirect_to reports_path } 
     format.js 
     else 
     flash[:notice] = "Report failed to save." 
     format.html { redirect_to reports_path } 
     end 
    end 
    end 

    def destroy 
    @report = Report.find(params[:id]) 
    if @report.destroy 
     format.html { redirect_to reports_path } 
     format.js   
    end 
    end 
end 

你可以假設我的報告顯示在Twitter的時間線格式,我想刪除報告功能添加到每個報告。請幫助我。

+0

你的控制器代碼看起來不錯。你的視圖代碼是什麼樣的?如果它是「ajax功能」,則可能必須編寫一些JavaScript,從視圖中刪除已刪除的記錄。 – Mischa 2011-03-29 12:57:23

+0

對不起,我有多個reports_path,這是不正確的,它應該是report_path作爲mischa提到。 – McStretch 2011-03-29 13:30:37

回答

2

在您的視圖中,您將添加一個鏈接,按鈕等,以將刪除操作發送回服務器。

使用link_to例如:

link_to("Destroy", report_path(report), :method => :delete, :confirm => "Are you sure?")

你可以做同樣的button_to

更新:

對不起,我錯過了AJAX提(感謝傑弗裏W.)。

如果您想通過AJAX發送刪除,您還需要添加:remote => true

+0

由於這是一個ajax調用,請確保您也刪除與數據庫中的條目對應的html。如果你不會;它會嘗試刪除不再存在的記錄。只是說:-) – 2011-03-29 13:02:45

+0

@Jeffrey,感謝提到AJAX,我錯過了OP的問題。我不認爲他需要處理從DOM刪除記錄,如果這就是你的意思。我前幾天剛剛這樣做了,而且我很確定內置的rails助手爲我處理了它。 – McStretch 2011-03-29 13:10:09

+0

嗨,我接受你的答案McStretch先生,我想你說什麼,但現在的問題是,當我刪除點擊鏈接,它說 行動「秀」不能爲ReportsController找到未知的動作。 – Metal 2011-03-29 13:17:38