7

어떤 이유로 페이스 북 크롤러가 내 rails 액션에서 json 응답을 트리거하고 있습니다. 이로 인해 액션은 정상적인 HTML 마크 업 + 열린 그래프 태그없이 객체의 json 표현을 반환합니다. 나는 이것을 레일과 함께 시험했다. 3.2.6. 페이스 북 오픈 그래프 디버거를 사용하여 스크레이퍼가보고있는 것을 확인합니다 : http://developers.facebook.com/tools/debug.facebook 열린 그래프 크롤러 트리거링 json 응답 in rails 액션

코드는 매우 간단합니다. 예를 들어 사용자와 같은 객체에 대한 간단한 "표시"작업을 생각해보십시오. 다음으로 끝납니다 :

respond_to do |format| 
    format.js { render :json => @this.to_json } 
    format.html 
end 

facebook 크롤러가 열려있는 그래프 태그를 렌더링하지 못하도록하는 format.js를 실행 중입니다. 이것이 일어날 수있는 이유나 해결 방법에 대한 아이디어가 있습니까? 감사.

답변

15

확인 레일 단지 순서 respond_to 블럭 내려 간다

*/* 

의 헤더를 받아 들인다. 당신은 JSON과 페이스 북의 개방 크롤러에 응답합니다 아래의 레일처럼 respond_to 블록에 먼저 JS를 게시하면 어떤 작동하지 않습니다 :

respond_to do |format| 
    format.html 
    format.js { render :json => @this.to_json } 
end 
:

respond_to do |format| 
    format.js { render :json => @this.to_json } 
    format.html 
end 

그냥 기본 레일에 의해 순서를 수 있도록 전환은 HTML로 응답

페이스 북에서 그들이 찾고있는 형식을 지정하지 않은 이유는 확실하지 않습니다 ... 저에게 꽤 바보스러운 것처럼 보입니다. 바라기를 이것은 길 아래의 누군가에게 도움이된다.

+0

예를 들어 (IIRC) 이전 IE에서 페이지를 다시로드 할 때와 같이 */*를 수락 할 것이라고 말하는 "실제"사용자 에이전트가 있습니다. 어쨌든 HTML을 # 1 우선 순위로 사용하도록 애플리케이션을 설정하는 것이 가장 좋습니다. – CBroe

+0

이것은 작동하지 않는 것 같습니다. format.html, format.js 및 format.json에 대한 다양한 주문을 시도했습니다. Rails가 format.json으로 'HTTP_ACCEPT'*/*를 해석하는 것 같습니다. 어떤 식 으로든이 문제를 해결할 수 있습니까? 여기에 내 질문을 게시했습니다 : http://stackoverflow.com/questions/12094683/facebook-open-graph-action-rails-return-json-or-html – Dean

2

헤더를 포함한 어떤 HTTP 요청 헤더를 확인하십시오.

응용 프로그램에서 일반 HTML 출력과 다른 내용을 보내야한다고 생각하는 값을 보낼 수도 있습니다. 특정한 형식이 요구되지 않기 때문에 한국어가 전송되도록

+0

동의 함이 "*/*"인 것처럼 보입니다. 올바른 방향으로 나를 가리켜 주려고 투표하십시오! 아래 답변. – Marc

관련 문제