Search code examples
ruby-on-railsruby-on-rails-4sql-like

Rails 4.2.0 Likes, like button


I was trying to implement possibility of Liking posts on my website but I have failed to do so. After clicking on "Like" the count of likes does not grow.

This is my button in view (partial).

    <%= link_to "Like", like_post_path(post, like: true), method: 'post' %>
    <%= pluralize( post.likes.size, "like") %>

And my models:

 class Post < ActiveRecord::Base
   belongs_to :user
   has_many :likes, as: :likeable
  ...
 end

User:

has_many :posts, dependent: :destroy

Like:

class Like < ActiveRecord::Base
    belongs_to :user
    belongs_to :likeable, polymorphic: true
end

Like action in posts controller:

def like
    Like.create(user: current_user, like: params[:like])
    flash[:success] = "Like Counted!"
    redirect_to :back
end

routes:

resources :posts do
    member do
        post 'like'
    end
end

And my migration: class CreateLikes < ActiveRecord:: Migration

  def change
    create_table :likes do |t|
            t.boolean :like, :default => false
      t.references :likeable, polymorphic: true
      t.integer :user_id

      t.timestamps null: false
    end
  end
end

I have used polymorphic because I am planning to add ability to Like comments as well.


Solution

  • I have found answer to my problem shortly after i added this post but decidec not to delete it so someone could get help. I simply added: post = Post.find(params[:id]) Like.create(likeable: post, user: current_user, like: params[:like])