I am trying to create a like and dislike function inside rails for that I 
am using lin_to helper to pass params but there is an issue when ever 
someone tries to copy paste the links it updated the database . I am using 
ajax to make this function work here is the code for my method .

Controller code :

 class FeedLikesController < ApplicationController
            before_action :authenticate_user! ,only: [:create, :destroy]
             before_action :get_feed ,only: [:create, :destroy]


              def index
                @fees = FeedLike.all
                respond_to do |format|

                        format.html 
                        format.js


             end
              end
             def update
                @feed_likes = FeedLike.find_or_create_by(feed_like_params)
                    respond_to do |format|
                        if @feed_likes.save
                        format.html { redirect_to root_url, notice: 'Like ' }

                        else

                        end
                   end
            end
              def create
                    @feed_like_counter= Feed.find(params[:feed_id])
                    @feed_likes = FeedLike.find_or_create_by(:feed_id => 
params[:feed_id],:user_id =>params[:user_id])
                     @f = @feed_like_counter.like_count
                     @feed_like_counter.like_count = @f+1
                     @feed_like_counter.save
                    respond_to do |format|
                        if @feed_likes.save 
                        format.html { redirect_to root_url, notice: 'Like ' }
                        format.js
                        else

                        end
                   end
              end


              def delete

              end

              def destroy
                  @feed_like_counter= Feed.find(params[:feed_id])
                  @feed_likes = FeedLike.where(feed_like_params)
                  @f = @feed_like_counter.like_count
                  @feed_like_counter.like_count = @f-1
                  @feed_like_counter.save
                  respond_to do |format|
                       if @feed_likes.destroy_all
                       format.html { redirect_to root_url, notice: 'Unlike ' }
                       format.js
                       else

                       end
                   end
              end
              def feed_like_params
                  params.permit(:user_id, :feed_id)
                  #params[:market_place]
                end
            def get_feed
              @feed= Feed.find(params[:feed_id])
            end

              end

And in views my link is like this :

  <div class="feed-like-<%= @feed %> " >

              <%= link_to "like",{ :action => 'create', :controller => 
'feed_likes', :feed_id => @feed, :user_id => current_user.id, :remote => true 
}, method: :post,class: "btn btn-primary"   %>

                  </div>

And dislike link is like this :

        <div class="feed-like-<%= @feed %> " >
             <%= link_to "Dislike",{ :action => 'destroy', :controller => 
'feed_likes', :feed_id => @feed, :user_id => current_user.id, :remote => true 
}, class: "btn btn-primary" %>

              </div>

And my routes is like :

   get "/feed_likes/:feed_id/feed_likes/:user_id" => "feed_likes#destroy"
      post "/feed_likes/:feed_id/feed_likes/:user_id" => "feed_likes#create"

Here the issue is whenever someone wants to like the feed when I passes the 
url direclty it updated the database how can I restrict this only when user 
click the button only then it update the database not by url :

There is another issue with this I am using ajax onclick event it updated 
the database but when I click the like button fast it update the databse 2 
or 3 times before the dislike partial appear . Is there any way I can use 
this .

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/d73200de-1c1e-4ac8-995d-5c9f8aaf9d08%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to