11

respond_with을 통합하여 컨트롤러를 건조하려고합니다. 레일 퀘스트의 일부 지시에 따라 수행 할 때 은 대부분입니다. 문제는 리소스를 삭제 한 후 리디렉션에 있습니다 ... people_url ...로 리디렉션되어야하지만 대신 특정 리소스를로드하려고 시도합니다.레일 3 : respond_with를 사용하여 리소스를 삭제하는 올바른 방법

샘플 코드이 같은 모습을 발견 ...하지만 그냥 삭제 리소스로드하려고 실패 : 내가 기대했던 (비록 하나가 작동하지 않습니다 respond_with(@people)에 마지막 라인을 변경

# 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(@person, :location => people_url) # <== now it works 

이렇게 이것을 처리하는 올바른 방법입니까? 그것은 respond_with 뒤에있는 모든 '마술'로 삭제 후 자신에게 리다이렉트 할 수 없다는 것을 알 것인가? 나도이 (7 가지 기본 RESTful CRUD 메소드 중 하나)은 매우 기초적이고 기초적이므로 많은 예제가 풍부하다는 것을 알았지 만, 작동하지 않는 코드를 제안하는 것을 제외하고는 많은 것을 찾을 수 없었습니다. 나를.

호핑 누군가가 여기에서 발생하는 레일 '마술'을 이해하도록 도와 줄 수 있으므로 길 아래로 날 불면 놀라지 않을 것입니다.

답변

5

삭제 된 리소스로 응답하려고합니다. 그것이 바로 문제입니다. 삭제와 같은 경우 헤더 전용 응답이 작동합니다. 요청 헤더 상태를 :ok으로 설정하면 충분합니다.

head :ok 
+2

감사합니다.하지만 슬프게도 여전히 혼란 스럽습니다. respond_with (head : ok)'라고 하시겠습니까? 왜냐하면 그건 효과가 없기 때문이죠. 나는'respond_to' 블록 안에있을 때만'format.xml {head : ok}'에 익숙하다. 이 경우에는'respond_with'를 어떻게 사용하는지 잘 모르겠습니까?!? – Meltemi

+0

@Meltemi - Ryan Bates의 ASCIICast를 확인하십시오. http://asciicasts.com/episodes/224-controllers-in-rails-3 – dennismonsewicz