2017-03-02 4 views
1

내 애플리케이션에 검색 페이지가 있습니다. 결과가 (분명히) 0 일 수 있습니다. 페이지가 결과를 반환하면 HTTP 200을 사용하고 결과가없는 경우 페이지에 HTTP 204를 반환합니다.Rails HTTP 204가 렌더링 템플릿이 아닙니다.

이 프로세스는 동시 호출 인 초기로드에서 작동합니다. 결과가 없다면 HTTP 상태가 204 인 결과가 없다는 페이지가 제대로 표시됩니다.

그러나 HTML을 통해 결과를 반환하는 검색을 수행 한 다음 내 검색 필터를 사용하여 알려진 빈 결과를 얻습니다 설정하면 AJAX 호출이 발생하고 컨트롤러가 작동하고 로그에 HTTP 204가 반환되지만 해당 JS 템플릿 (페이지를 다시 렌더링 함)은로드되지 않습니다 (예 : 표시 할 스피너를 계속 볼 수 있음). 그 일은 끝나고있다).

HTTP 상태 코드가 204 인 경우 레일즈가 AJAX 템플릿을 렌더링하지 못하도록합니까?

참고 : 아무런 결과가없고 status: :no_content 지시어를 사용하지 않아도 앱이 정상적으로 작동합니다. 하지만 결과가없는 200 개의 HTTP 상태가 잘못된 것 같습니다.

편집 - 대응 코드 내 결과를 필터링 한 후

, 나는 (will_paginate를 사용)를 쪽수를 매기다. 내 컨트롤러 메소드의 마지막 줄은 다음과 같습니다 레일 5에서

render :index, status: @results.total_entries.zero? ? :no_content : :ok 
+0

여기서 204 코드를 지정하는 방법과 작동하지 않을 수있는 위치를 설명하는 약간의 코드를 추가해야합니다. – tadman

+0

@tadman - duh, thanks. 끝난. – CDub

+0

'log/development.log' 파일에 204가 보이거나 거기에 잘못된 코드가 있습니까? – tadman

답변

0

당신은 HTTP 204: No content위한 경우 수동으로 응답 형식을 지정해야합니다.

자세한 설명은 here입니다.

+0

레일 5가 아니라 레일 4.2.7.1을 사용하고 있습니다. – CDub

관련 문제