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 [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/451f8d8c-59ce-460e-858b-d95f1e34649c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.