7

Herhangi bir nedenle, facebook tarayıcısı benim ray eylemlerimde json yanıtını tetikliyor. Bu, eylemin, normal html biçimlendirme + açık grafik etiketleri olmaksızın, nesnenin json temsilini döndürmesine neden olur. Bunu raylarla test ettim 3.2.6. Kazıyıcıların ne gördüğünü görmek için facebook açık grafik hata ayıklayıcısını kullanıyorum: http://developers.facebook.com/tools/debug.facebook açık grafik crawler triggering raylar eylemler içinde json yanıtı

Bu kod çok basit. Bir nesne için örneğin bir Kullanıcı gibi basit bir "gösteri" eylemi düşünün. O biter:

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

facebook paletli açık grafik etiketleri işlenemeyebilir neden format.js, tetikliyor. Bunun neden olabileceği veya nasıl düzeltilebileceği hakkında herhangi bir fikrin var mı? Teşekkürler.

cevap

15

Tamam raylar adil düzen içinde respond_to bloğu iner,

*/* 

başlığını kabul eder. Eğer JSON ile facebook açık paletli cevap verecektir aşağıda raylar gibi respond_to bloğunda ilk js listelerseniz hangi çalışmaz:

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 

Sadece varsayılan raylar tarafından sipariş böylece geçiş HTML ile yanıt

Facebook'un neden aradığı biçimi belirlemediğinden emin değilim ... bana oldukça aptalca görünüyor. Umarım bu yolun birisine yardımcı olur.

+0

Ayrıca "gerçek" kullanıcı aracıları kabul edeceklerini söylerler */* - örneğin (IIRC) eski IE bunu bir sayfada yeniden yükler. Bu nedenle, uygulamanızı, HTML'yi # 1 öncelik olarak zaten kullanabileceği şekilde ayarlamak en iyisidir. – CBroe

+0

Bu işe yaramaz görünmüyor, format.html, format.js ve format.json için çeşitli siparişler denedim. Rails 'HTTP_ACCEPT' */* 'i format.json olarak yorumluyor gibi görünüyor. Bunu düzeltebilmem için herhangi bir yol var mı? Sorumu burada yayınladım: http://stackoverflow.com/questions/12094683/facebook-open-graph-action-rails-return-json-or-html – Dean

2

Facebook tarayıcısının gönderdiği HTTP isteğinin ne olduğunu kontrol edin - özellikle başlığını kabul edin.

Uygulamanızın, normal HTML çıktısından sonra farklı bir şey göndermesi gerektiğini düşündüğü bir değer göndermeleri iyi olabilir. özel biçimi isteniyorsa bu yana Facebook bir gönderir böylece

+0

Kabuller "*/*" şeklinde görünüyor. Beni doğru yönde işaret ettiğin için oy ver! Aşağıda cevapla. – Marc