5

Ho difficoltà ad aggiungere i social plugin di Facebook (in particolare i commenti) alla mia app Rails 4 con Turbolinks abilitato. Ho seguito l'esempio su turbolinks issue #62, ma non sono riuscito a farlo funzionare.Commenti di Facebook w/Rails 4 e Turbolinks

Ho anche provato la soluzione di turbolink here, ma non riuscivo a farlo funzionare.

Non è stato possibile correggere l'errore di battitura nella pagina dei turbolinks per this answer.

L'SDK non si sta caricando e non ci sono errori nella console.

Codice:

### view: 
<div id="fb-root"></div> 
<div class="fb-comments" data-href="<%= request.original_url %>"></div> 

### coffeescript: 
fb_root = null 
fb_events_bound = false 

$ -> 
    loadFacebookSDK() 
    bindFacebookEvents() unless fb_events_bound 

bindFacebookEvents = -> 
    $(document) 
    .on('page:fetch', saveFacebookRoot) 
    .on('page:change', restoreFacebookRoot) 
    .on('page:load', -> 
     FB.XFBML.parse() 
    ) 
    fb_events_bound = true 

saveFacebookRoot = -> 
    fb_root = $('#fb-root').detach() 

restoreFacebookRoot = -> 
    if $('#fb-root').length > 0 
    $('#fb-root').replaceWith fb_root 
    else 
    $('body').append fb_root 

loadFacebookSDK = -> 
    window.fbAsyncInit = initializeFacebookSDK 
    $.getScript("//connect.facebook.net/en_US/all.js#xfbml=1") 

initializeFacebookSDK = -> 
    FB.init 
    appId  : 'xxxxxxxxxxxx' 
    channelUrl: '//www.mydomain.com/channel.html' 
    status : true 
    cookie : true 
    xfbml  : true 

### /public/channel.html 
<script src="//connect.facebook.net/en_US/all.js"></script> 

-

Grazie. Apprezzo davvero l'aiuto.

+0

avete risolto il problema? – marimaf

risposta

0

Prova questo e fammi sapere se funziona ...

creare un social.js.coffee in assets/javascripts cartella.

in esso scrivere:

$(document).on 'page:change', -> 
    FB.init({ status: true, cookie: true, xfbml: true }); 
+0

Grazie per la risposta. Questo ha semichiuso. Alla prima visita di una pagina, tuttavia, i commenti non vengono visualizzati. L'invio di invio non aggiunge il nuovo commento all'elenco di commenti. Anche se, questo potrebbe essere un problema non correlato. Dopo aver aggiornato la pagina, tutto appare come previsto. Inoltre, questa soluzione non inizializza l'SDK su ogni pagina caricata/cambia - diventando costosa man mano che l'app cresce? –

0

Effettuare le seguenti operazioni:

Installare observejs:

gem 'observejs' 

Quindi aggiungere tag al widget:

<div as="FB" class="fb-comments" data-href="<%= request.original_url %>"></div> 

quindi creare un nuovo script in javascrip cartella ts (fb.coffee nel mio esempio):

ObserveJS.bind 'FB', class 
    root: document.createElement('div') 
    @::root.id = 'fb-root' 

    loaded: => 
    if !document.body.contains(@root) 
     document.body.appendChild(@root) 

    if FB? 
     FB.XFBML.parse() 
    else 
     @initialize() 

    initialize: => 
    js = document.createElement('script') 

    script = document.getElementsByTagName('script')[0] 
    js = document.createElement('script') 
    js.id = 'facebook-jssdk' 
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=YOUR_APP_ID&version=VERSION_OF_API" 
    script.parentNode.insertBefore(js, script) 

includere i file js nelle application.js

//= require observejs 
//= require fb