2014-12-28 4 views
2

Twitter 공유 버튼을 Rails 4 앱 + Turbolinks와 함께 사용하려고합니다. 내보기에서레일 4 : 터보 링크로 Twitter 공유 버튼을 얻는 방법

, 내가 가진 :

class @Twitter 
    eventsBound = false 
    @load: -> 
     Twitter.loadTwitterSDK() 
     Twitter.bindEvents() unless Twitter.eventsBound 
    @bindEvents: -> 
     if typeof Turbolinks isnt 'undefined' and Turbolinks.supported 
      $(document).on('page:load', Twitter.renderTweetButtons) 
     Twitter.eventsBound = true 
    @renderTweetButtons: -> 
     $('.twitter-share-button').each -> 
      button = $(this) 
      button.attr('data-url', document.location.href) unless button.data('url')? 
      button.attr('data-text', document.title) unless button.data('text')? 
    @loadTwitterSDK: -> 
     $.getScript("//platform.twitter.com/widgets.js") 
Twitter.load() 

이 버튼이 나타납니다 :

<a href="https://twitter.com/share" class="twitter-share-button" data-lang="en" data-text="<%= @article.title %>" data-via="<%= t('twitter_user') %>">Tweet</a> 

가 나는 또한 내 응용 프로그램/자산/자바 스크립트/디렉토리에 twitter.js.coffee 파일이 열심히 페이지를 새로 고칠 때 탐색 할 때 사라집니다 (Turbolinks 때문에). 아마도 renderTweetButtons 함수를 계속 호출해야하지만 어떻게해야할지 모르겠습니다.

도움을 주셨습니다. 감사합니다 :) 대신

+0

한번에 추가 데이터 노 turbolink = "false"를? – webster

+0

차이는 없습니다 : \ – DaniG2k

+0

data-no-turbolink = "true"는 어떻습니까? – webster

답변

1

문제는 내가 @renderTweetButtons 내 twttr.widgets.load()을 것이없는 하였다. 다음은 전체 파일의 모습입니다.

class @Twitter 
    eventsBound = false 
    @load: -> 
     Twitter.loadTwitterSDK() 
     Twitter.bindEvents() unless Twitter.eventsBound 
    @bindEvents: -> 
     if typeof Turbolinks isnt 'undefined' and Turbolinks.supported 
      $(document).on('page:load', Twitter.renderTweetButtons) 
     Twitter.eventsBound = true 
    @renderTweetButtons: -> 
     $('.twitter-share-button').each -> 
      button = $(this) 
      button.attr('data-url', document.location.href) unless button.data('url')? 
      button.attr('data-text', document.title) unless button.data('text')? 
     twttr.widgets.load() 
    @loadTwitterSDK: -> 
     $.getScript("//platform.twitter.com/widgets.js") 
Twitter.load() 

그게 문제를 해결했습니다.

그것은 나를 위해 일한 것
0

:

Twitter.load() 

시도 : here을 문서화

$(document).ready(Twitter.load()) 
$(document).on('page:load', Twitter.load()) 
+0

동일. 열심히 새로 고침하지 않으면 Twitter 공유 아이콘이 나타나지 않습니다. 트위터의 widgets.js 파일과 관련이 있을지도 모르는 느낌이 들었습니다.이 파일은 여러 다른 장소에서 preventDefault를 호출합니다. – DaniG2k

0

:

제공된 자바 스크립트는 외부 스크립트 태그가 platform.twitter.com/widgets.js를 가리키는 니펫을 교체합니다.

<body> 
    <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://example.org" data-size="large">Tweet</a> 
    <script src="//platform.twitter.com/widgets.js"></script> 
</body> 

소스 링크에 here

관련 문제