Ruby on rails RubyonRails:按用户删除投票记录
我创建了一个基本的RubyonRails应用程序,用户可以在其中投票选择pin。他们可以使用ajax方法为pin投票 我现在想要的是让用户删除他们的投票 以下是我的实现: pins\u controller.rb:Ruby on rails RubyonRails:按用户删除投票记录,ruby-on-rails,ruby,ajax,vote,Ruby On Rails,Ruby,Ajax,Vote,我创建了一个基本的RubyonRails应用程序,用户可以在其中投票选择pin。他们可以使用ajax方法为pin投票 我现在想要的是让用户删除他们的投票 以下是我的实现: pins\u controller.rb: def upvote @pin = Pin.friendly.find(params[:id]) @pin.votes.create(user_id: current_user.id) respond_to do |format| format.h
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
用户\u控制器.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
has_many :votes, dependent: :destroy
投票.rb
class Vote < ActiveRecord::Base
belongs_to :user
belongs_to :pin, counter_cache: true
validates_uniqueness_of :pin_id, scope: :user_id
end
在我看来,他们可以通过以下方式投票:
<% if @pin.votes.where(user_id: current_user.id).empty? %>
<%= link_to upvote_pin_path(@pin), method: :put, remote: true do %>
Vote for this pin
<% end %>
<% else %>
<% end %>
投票支持这个别针
现在我想让用户删除投票记录,但我不确定如何设置,我尝试在我的控制器中创建downvote方法,但没有任何效果
有什么想法可以让我走上正轨吗?更多信息会有所帮助。例如,我假设存在一些限制,例如每个投票必须与一个用户绑定,每个用户每个pin只有一个投票。然而,解决方案是这样的 在pins_controller.rb中
def downvote
@pin = Pin.friendly.find(params[:id])
Vote.where(:user_id => current_user.id, :pin_id => @pin.id).each { |v| v.delete }
respond_to do |format|
format.html { redirect_to @pin }
format.js
end
end
在你看来
<% if @pin.votes.where(user_id: current_user.id) %>
<%= link_to downvote_pin_path(@pin), method: :put, remote: true do %>
DELETE your Vote for this Pin!
<% end %>
<% else %>
<% end %>
更多信息会有所帮助。例如,我假设存在一些限制,例如每个投票必须与一个用户绑定,每个用户每个pin只有一个投票。然而,解决方案是这样的 在pins_controller.rb中
def downvote
@pin = Pin.friendly.find(params[:id])
Vote.where(:user_id => current_user.id, :pin_id => @pin.id).each { |v| v.delete }
respond_to do |format|
format.html { redirect_to @pin }
format.js
end
end
在你看来
<% if @pin.votes.where(user_id: current_user.id) %>
<%= link_to downvote_pin_path(@pin), method: :put, remote: true do %>
DELETE your Vote for this Pin!
<% end %>
<% else %>
<% end %>
“我试图在我的控制器中创建一个向下投票方法,但没有任何效果。”如果您包含您尝试过的代码,这会有所帮助,否则,您会要求人们进行随机猜测。“我试图在我的控制器中创建向下投票方法,但没有任何效果。”如果您包含您尝试过的代码,则会有所帮助,否则,你要求人们随机猜测。