Rails - удаление вложенных объектов - PullRequest
3 голосов
/ 30 мая 2011

Я хочу удалить вложенный объект book, который принадлежит user. На странице user#show отображаются все books, связанные с этим user. Помимо каждой книги есть ссылка на 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 %>

Я знаю, что это неправильно, но как я могу это сделать, чтобы удалить нужную книгу?

1 Ответ

3 голосов
/ 30 мая 2011

При удалении вы можете забыть о том, что это вложенный ресурс. Вы знаете, о какой книге вы говорите, поэтому вы можете просто удалить ее напрямую.

Маршруты:

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 %>
...