Okay, if I understand.... This is what I suggest you do: Like vs. dislike is a binary: true /false, yes / no, 1 / 0 . So you should be capturing this value as a binary with a checkbox, or something like that -- you could use a fancy button..
Drop your separate like and dislike fields in your table: research Rails model drop field Then add a new field, call it maybe, feed_like. research Rails model add field. Then store whatever binary you like, I'd use 1 and 0 because later SQL manipulation, eg, summing, will be easier. Next revisit your controller and view... Hope this helps... Liz PS: def index @feeds = FeedLike.all @feeds ??? not @fees respond_to do |format| format.html format.js end On Monday, August 10, 2015 at 5:47:40 PM UTC-4, nilay singh wrote: > > http://ec2-52-6-228-48.compute-1.amazonaws.com/ Here is the live > application I am working on here there is a like button when I click on > like button it update my database that it liked and dislike button appear > it work well but when I click very fast 3 times before dislike appear it > sneds three ajax request . And it is a very bad thing how to fix 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 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/f53854e0-eb61-4be6-b910-a2d1e77819cf%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.