1
votes

I have one rails application where I am using Disqus Universal Code for comment function. I am using ajax remote => true function to display my posts content. Here is my disqus code

 <div id="disqus_thread"></div>
   <script type="text/javascript">
      var disqus_shortname = 'ginfy';
      var disqus_identifier = '<%= @posts.id %>';
      (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
  </script>
  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> 

I know that Disqus depends on Site URL and it takes different thread based on different URL but here i am using AJAX [No CHANGE IN URL]. check my erb-

<%= link_to "Read more","prayers/#{posts_item.id}",:remote => "true" %>

When I click on read more then Disqus always open with same Thread. I want Different disqus thread for different posts without sacrificing my Ajax functionality.

I already checked all the question related to this problem but nothing gave me solution. Please help me.

1

1 Answers

1
votes

You'll need to use the Disqus.reset function when you want to change the thread. Something like the following would work:

<script type="text/javascript">
    var changeThread = function(){

        DISQUS.reset({
          reload: true,
          config: function () {  
            this.page.identifier = 'new_disqus_identifier';
            this.page.url = 'http://example.com/#!new_content';
            this.page.title = "New Page Title";
            this.language = "fr"; // only if changing the language
          }
        });

    };
</script>

<button onclick=changeThread();>Change the Disqus thread!</button>

<div id="disqus_thread"></div>
    <script type="text/javascript">
        var disqus_shortname = 'ginfy';
        var disqus_identifier = '<%= @posts.id %>';
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();
    </script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>