所以我有一个非常简单的投票系统,允许用户投票:
应用/视图/针/ 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方法,但没有任何工作。有什么想法让我走上正轨吗? : - )
答案 0 :(得分:0)
我会在模型中创建一个检查给定用户是否存在投票的方法,然后删除它,否则创建一个。然后在您的控制器中,在您创建的upvote方法中,调用模型中的新方法。
当然你可以在控制器中完成所有这些工作,但最好不要这样做。