Skip to main content

How do I mark content as "seen" or "read" when it's in the user's view?

Rails • Asked by Sam

Hi everyone,

I'm trying to mark messages as "seen" when the div has entered the user's view (for example, the Facebook behavior of seen posts). My current attempt is a mix of the Unread gem (https://github.com/ledermann/unread) and the isOnScreen Jquery plugin (https://github.com/moagrius/isOnScreen).

But my two biggest problems are,

1) how do I get the Javascript to account for all ActiveRecord entries on a page? For instance, I can provide <div id="post-<%= post.id %>">, but how would I test for every possible div?
2) Once the Javascript confirms that a div is in view, how do I get it to send that information to Rails (to create a record in the user_read_posts table)?

Am I approaching this the wrong way altogether?


Did you figure this out?

I too would love to know how to do this.


See my answer to the same here: https://gorails.com/forum/how-to-mark-a-post-as-read-so-that-it-won-t-show-up-again-for-a-user#forum_post_14150

You can do two types of user interactions:

  • The one described in the above link is a button 'Mark as Read' similar to what we have here on Gorails 'Mark as Completed'.
  • The other one may be an automatic one where the page is marked as read automatically as soon as the user loads the page. In this case the difference will be in the controller. As soon as the user hits the show method, you create a journal entry that records the view.

Hope this makes sense after reading the link above.


Login or Create An Account to join the conversation.

Subscribe to the newsletter

Join 27,623+ developers who get early access to new screencasts, articles, guides, updates, and more.

    By clicking this button, you agree to the GoRails Terms of Service and Privacy Policy.

    More of a social being? We're also on Twitter and YouTube.