Ask A Question

Notifications

You’re not receiving notifications from this thread.

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

Sam asked in Rails

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?

Reply
Did you figure this out?
Reply

I too would love to know how to do this.

Reply

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.

Reply
Join the discussion
Create an account Log in

Want to stay up-to-date with Ruby on Rails?

Join 81,842+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.

    Screencast tutorials to help you learn Ruby on Rails, Javascript, Hotwire, Turbo, Stimulus.js, PostgreSQL, MySQL, Ubuntu, and more.

    © 2024 GoRails, LLC. All rights reserved.