Thanks for reply paul . If you can suggest me how should I use these 
controllers code in model I am new to rails so I am not aware about this 
method . And for this problem I found a way to delay the process  using 
disable_with method in rails and it fix the problem by delaying the process 
. 

So here is the solution code  :

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


And paul there is one more problem . I need to fix that you can see the url 
of my links are passsing the params is it a right way if yes then ok but 
the problem is When I paste the url direclty in the browser it get updated 
how can I prevent this .
On Tuesday, August 11, 2015 at 1:06:52 AM UTC+5:30, nilay singh wrote:
>
> 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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/ea2211c6-a236-4cb9-a11d-993fca0876b5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to