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.