Acts As Votable is a Ruby Gem. It is used to give user a way to Like and unlike something(Post, Link etc) and update the counter each time they click without refreshing the page.
This gem is specically written for Rails/ActiveRecord models, and allow a model to be voted (like,dislike etc).
Lets install the gem by the command below:
 
gem 'acts_as_votable'
Acts As Votable uses a votes table to store all voting information. To generate and run the migration just run the below commands.
rails generate acts_as_votable:migration
rake db:migrate
Now we need to add acts_as_votable helper to our model(app/models/link.rb).
class Link < ActiveRecord::Base
  acts_as_votable
end
Next we will set up the views to interact with our new functionality. So we need some routes. In app/config/routes.rb, we'll need to add another block to our links section.
resources :links do
  member do
    put "like", to: "links#liked_by_user"
    put "dislike", to: "links#disliked_by_user"
  end
end
This block invokes liked_by_user and disliked_by_user methods in the links controller. So open app/controllers/links_controller.rb file and add the below code.
def liked_by_user
  @link = Link.find(params[:id])
  @link.upvote_by current_user
  redirect_to :back
end  
def disliked_by_user
  @link = Link.find(params[:id])
  @link.downvote_by current_user
  redirect_to :back
end
Finally we will create links in our view to like and dislike.
 
<%= link_to like_link_path(link), method: :put do %>
  Like
  <%= link.get_upvotes.size %>
<% end %>
<%= link_to dislike_link_path(link), method: :put do %>
  Dislike
  <%= link.get_downvotes.size %>
<% end %>
 
                       
                    
0 Comment(s)