2011-05-01 98 views
0

我有兩種模式:頁面和作者,當我選擇銷燬方法時,它只是返回顯示頁面。通過告訴模型作者has_many:頁面和頁面屬於許多作者鏈接模型。銷燬方法已停止工作

這是我的頁面控制器代碼:

class PagesController < ApplicationController 

def index 
@pages = Page.find(:all, :order => 'created_at DESC') 
end 

def show 
@page = Page.find(params[:id]) 
end 

def new 
@page = Page.new 
end 

def edit 
@page = Page.find(params[:id]) 
end 

def create 
@page = Page.new(params[:page]) 

if @page.save 
     redirect_to(@page, :notice => 'Page was successfully created.') 
    else 
     render :action => "new" 
    end 
end 

def update 
@page = Page.find(params[:id]) 

    if @page.update_attributes(params[:page]) 
    redirect_to(@page, :notice => 'Page was successfully updated.') 
    else 
    render :action => "edit" 
    end 
end 

def destroy 
@page = Page.find(params[:id]) 
@page.destroy 
end 

def author 
@pages = @author.pages 
end 

end 

我應該在哪裏尋找解決這個問題,當我擊中摧毀它semds我的頁面破壞,但僅此而已,沒有:顯示通知它似乎沒有銷燬方法。

謝謝

回答

1

我不知道你的

的意思選擇銷燬方法

但我假設你剛剛訪問pages/:id網址在瀏覽器嗎?這就是你所說的show行動。

爲了實際銷燬您的模型(即訪問控制器中的destroy動作),您需要發送DELETE/pages/:id

<%= link_to 'Destroy', @page, :confirm => 'Are you sure?', :method => :delete %> 

注意:method => :delete

這是使用像通常完成。這實際上將發送DELETE控制器(假設你有你的rails.js包括照顧這一點),從而映射到destroy行動,而不是show行動

+0

我刪除了它..... Ahhhhhhh !!!! – StudentRik 2011-05-01 22:24:36

0

幾件事情來看待:

  • 目前尚不清楚您發送到應用程序的HTTP請求類型。 show動作似乎被觸發的事實使我認爲你的請求是一個HTTP GET方法。如果您想要調用destroy操作,請確保它是HTTP DELETE方法。

  • 您是否檢查過數據庫以查看ActiveRecord是否已被銷燬?這可能是因爲您沒有設置Flash通知消息,因此您沒有看到任何通知。例如:


def destroy 
    @page = Page.find(params[:id]) 
    flash[:notice] = "Page successfully removed" 
    @page.destroy 
    # You may also want to have a redirect here, e.g. redirect_to @pages 
end 
  • 在一個單獨的說明,不知道你是什麼努力實現與您的控制器筆者方法,但它看起來不正確。這不是寧靜,它似乎返回一組頁面而不是作者。
0

您是否在瀏覽器中禁用了JavaScript? :)