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