7

किसी कारण से फेसबुक क्रॉलर मेरे रेल कार्यों में जेसन प्रतिक्रिया को ट्रिगर कर रहा है। यह सामान्य एचटीएमएल मार्कअप + ओपन ग्राफ़ टैग के बिना ऑब्जेक्ट के जेसन प्रस्तुति को वापस करने का कार्य करता है। मैंने रेलवे 3.2.6 के साथ इसका परीक्षण किया है। स्क्रैपर क्या देख रहा है यह देखने के लिए मैं फेसबुक ओपन ग्राफ डीबगर का उपयोग करता हूं: http://developers.facebook.com/tools/debugफेसबुक ओपन ग्राफ क्रॉलर रेल क्रियाओं में जेसन प्रतिक्रिया को ट्रिगर करता है

कोड बहुत आसान है। किसी ऑब्जेक्ट के लिए एक सरल "शो" एक्शन की कल्पना करें, उदाहरण के लिए उपयोगकर्ता। यह साथ समाप्त होता है:

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

फेसबुक क्रॉलर format.js, जिसकी वजह से खुला ग्राफ टैग रेंडर नहीं किया जा करने के लिए ट्रिगर कर रहा है। कोई विचार यह क्यों हो सकता है या इसे कैसे ठीक किया जाए? धन्यवाद।

उत्तर

15

ठीक है तो फेसबुक एक भेजता

*/* 

के शीर्षक को स्वीकार करता है, रेल बस क्रम में respond_to ब्लॉक नीचे चला जाता है। आप नीचे दिए गए रेल की तरह respond_to ब्लॉक JSON के साथ फेसबुक खुला क्रॉलर का जवाब देंगे में पहली बार अपने 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

"वास्तविक" उपयोगकर्ता एजेंट भी कहते हैं कि वे स्वीकार करेंगे */* - उदाहरण के लिए (आईआईआरसी) पुराना आईई पृष्ठ रीलोड पर ऐसा करेगा। तो हो सकता है कि आपका एप्लिकेशन सेट अप करने के लिए सबसे अच्छा हो कि यह HTML को # 1 प्राथमिकता के रूप में कार्य करता है। – CBroe

+0

यह काम नहीं प्रतीत होता है, मैंने format.html, format.js, और format.json के लिए विभिन्न ऑर्डर की कोशिश की। ऐसा लगता है कि रेल 'HTTP_ACCEPT' */* को format.json के रूप में व्याख्या कर रहा है। किसी भी तरह से मैं इसे ठीक कर सकता हूँ? मैंने यहां अपना प्रश्न पोस्ट किया: http://stackoverflow.com/questions/12094683/facebook-open-graph-action-rails-return-json-or-html – Dean

2

जांचें कि कौन सी HTTP अनुरोध हैडर फेसबुक क्रॉलर भेज रहा है - विशेष रूप से हेडर स्वीकार करें।

अच्छी तरह से यह हो सकता है कि वे एक मान भेजें जो आपके आवेदन को लगता है कि इसे सामान्य HTML आउटपुट के बाद कुछ अलग भेजना है। के बाद से कोई विशेष प्रारूप का अनुरोध किया है

+0

स्वीकार करता है जैसे स्वीकार "*/*" है। सही दिशा में मुझे इंगित करने के लिए वोट दें! नीचे जवाब दें। – Marc

संबंधित मुद्दे