Я создал базовый рубин на приложениях rails, где пользователи могут голосовать за булавку. Они могут голосовать за булавку, используя метод ajax.Ruby on rails: удалить запись голоса пользователем
Теперь я хочу, чтобы пользователи удалили свой голос.
Вот моя реализация:
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
users_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
pin.rb
has_many :votes, dependent: :destroy
в моих взглядах, они могут upvote булавку через это:
<% 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 в моих контроллерах, но ничего не получилось.
Любые идеи, чтобы поставить меня на путь?
«Я попытался создать метод downvote в моих контроллерах, но ничего не получилось». Это поможет, если вы включили код, который вы пробовали, в противном случае вы просите людей делать произвольные догадки. – MarsAtomic