11

Я пытаюсь высушить контроллер, включив respond_with. Когда я это делаю, следуя некоторым инструкциям в Railscast, я получаю вещи в основном работающих. Проблема заключается в перенаправлении после удаления ресурса ... который должен быть перенаправлен на people_url ... но вместо этого пытается загрузить определенный ресурс.Рельсы 3: Правильный способ удаления ресурса с помощью response_with

В примере кода я нашел, как выглядит это ... Но он терпит неудачу при попытке загрузить ресурс он просто удален:

# 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 

изменения, что последняя строка в respond_with(@people) не работает, либо (хотя я надеялся, это было бы ...)

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

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

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

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

ответ

5

Вы пытаетесь ответить ресурсом, который удален. Вот в чем проблема. В таких случаях, как удаление, работают только ответы заголовка. Достаточно установить статус заголовка запроса на :ok.

head :ok 
+2

Спасибо, но, к сожалению, я все еще смущен. вы предлагаете 'response_with (head: ok)'? потому что это не работает. Я только знаком с 'format.xml {head: ok}', когда внутри блока 'reply_to'. поэтому не уверен, как работать с ним при использовании 'response_with' в этом случае?!? – Meltemi

+0

@Meltemi - Проверьте ASCIICast от Райана Бейтса: http://asciicasts.com/episodes/224-controllers-in-rails-3 – dennismonsewicz

 Смежные вопросы

  • Нет связанных вопросов^_^