3

我想刪除嵌套對象book,它由user擁有。在user#show頁面出現所有與user相關的books。除了每本書,還有一個鏈接到delete它。這裏是我的代碼:導軌 - 嵌套對象刪除

routes.rb

resources :users do 
    resources :books, :only => [:new, :create, :destroy] 
end 

book_controller.rb

def destroy 
    @user= User.find(params[:user]) 
    @book = Book.find(params[:book]) 
    @book.destroy 
    redirect_to current_user 
end 

而在user#show頁:

<%= link_to "Delete", user_book_path(current_user, book), :method => :delete %> 

我知道這是錯的,但我怎麼能這樣做是爲了刪除通緝書嗎?

+0

你向我們展示的代碼並沒有太大的意義。在哪個控制器中是'destroy'方法?書和用戶有什麼關係? – Mischa 2011-05-30 15:05:44

+0

要編輯問題。 – Samth 2011-05-30 15:08:22

+0

謝謝。我現在明白你的問題。 – Mischa 2011-05-30 15:16:43

回答

3

當你正在刪除時,你可以忘記它是一個嵌套資源的事實。你知道你正在談論哪本書,所以你可以直接刪除它。

路線:

resources :users do 
    resources :books, :only => [:new, :create] 
end 

resources :books, :only => :destroy 

書控制器:

def destroy 
    @book = Book.find(params[:id]) 
    @book.destroy 
    redirect_to current_user 
end 

查看:

<%= link_to "Delete", book_path(book), :method => :delete %> 
+0

謝謝!工作就像一個魅力:) – Samth 2011-05-30 15:23:05

+0

不客氣。 – Mischa 2011-05-30 15:24:49

+0

謝謝你這個明確的答案!我一直在尋找這些信息45分鐘。 – Clay 2011-08-24 14:09:32