Rails:允许用户销毁投票

时间:2014-12-14 20:41:12

标签: javascript ruby-on-rails model controller destroy

所以我有一个非常简单的投票系统,允许用户投票:

应用/视图/针/ show.html.erb

<%= link_to upvote_pin_path(@pin), method: :put, remote: true do %>
Upvote
<% end %>

应用/控制器/ pins_controller.rb

 def upvote
  @pin = Pin.friendly.find(params[:id])
  @pin.votes.create(user_id: current_user.id)
    respond_to do |format|
    format.html { redirect_to @pin }
    format.js
 end
end

应用/模型/ vote.rb

class Vote < ActiveRecord::Base
    belongs_to :user
    belongs_to :pin, counter_cache: true
    validates_uniqueness_of :pin_id, scope: :user_id
end

config / routes

  resources :pins do 
    resources :comments
    member do
    put 'upvote'
  end 
  end

我想要的是允许用户根据需要销毁他们的投票。我尝试了几个使用:delete和destroy方法,但没有任何工作。有什么想法让我走上正轨吗? : - )

1 个答案:

答案 0 :(得分:0)

我会在模型中创建一个检查给定用户是否存在投票的方法,然后删除它,否则创建一个。然后在您的控制器中,在您创建的upvote方法中,调用模型中的新方法。

当然你可以在控制器中完成所有这些工作,但最好不要这样做。