Rails 3: Правильный способ удаления ресурса с помощью response_with

Я пытаюсь ОСУШИТЬ контроллер, включив response_with . Когда я это делаю, следуя некоторым инструкциям в Railscast, я получаю в основном работающие. Проблема заключается в перенаправлении после удаления ресурса ... который должен перенаправлять на people_url ... но вместо этого пытается загрузить конкретный ресурс.

Пример кода I найдено выглядит так ... Но ему не удается загрузить только что удаленный ресурс:

# app/controllers/people_controller.rb
class PeopleController < ApplicationController
  respond_to :html, :xml

  def destroy
    @person = Person.find(params[:id])
    flash[:notice] = 'Successfully deleted person.' if @person.destroy
    respond_with(@person)  # <== spec fails here
  end
end

изменение последней строки на response_with (@people) тоже не работает (хотя я надеялся, что это будет ...)

После долгих поисков и попыток разобраться в вещах я заставил все работать (по крайней мере, так могло показаться. Спецификации передаются. Приложение функционирует) следующим образом:

respond_with(@person, :location => people_url)  # <== now it works

Итак, это правильный способ справиться с этим? Кажется, что со всей «магией», стоящей за response_with, он знает, что не может перенаправить на себя после удаления? Я также подумал, что это (один из 7 основных методов RESTful CRUD) будет довольно простым и рудиментарным, поэтому примеров будет предостаточно ... но я не смог найти многих, кроме тех, которые предполагают код, который не работал для мне.

Надеюсь, что кто-нибудь поможет мне разобраться в «магии» рельсов это происходит здесь, поэтому я не удивлюсь, когда это случится со мной по дороге.

11
задан nessur 14 March 2011 в 14:12
поделиться