У меня небольшая проблема с актами голосования.
Кнопка «Мне нравится», и счет обновляется корректно (с помощью AJAX) на странице каждого из моих «программ».Но не работает должным образом на домашней странице (или есть несколько программ).
Когда я нажимаю кнопку «Мне нравится» (на моей домашней странице), количество лайков обновляется, но значение обновляется и идентичнодля всех программ (но когда я вручную обновляю страницу, значения верны).
Я не могу найти решение этой проблемы.
Мои коды:
softwares_controller.rb
def upvote
if !current_user.liked? @software
@software.liked_by current_user
elsif current_user.liked? @software
@software.unliked_by current_user
end
respond_to do |format|
format.html { redirect_back(fallback_location: root_path) }
format.js
end
end
softwares / show
<%= link_to like_software_path(@software), class:"like-btn", method: :put, remote: true do %>
<button class="btn btn-warning">
<span><p><i class="fa fa-thumbs-up fa-lg" aria-hidden="true"></i></p></span>
</button>
<% end %>
<span class="likes-count"> <%= @software.get_upvotes.size %> </span>
просмотр домашней страницы
<%= link_to like_software_path(software), class:"like-btn", method: :put, remote: true do %>
<button class="btn btn-warning">
<span><p><i class="fa fa-thumbs-up fa-lg" aria-hidden="true"></i></p></span>
</button>
<% end %>
<span class="likes-count"> <%= software.get_upvotes.size %> </span>
rout.rb
resources :softwares do
member do
put "like" => "softwares#upvote"
put "dislike" => "softwares#downvote"
end
end
softwares / upvotes.js.erb
<% if current_user.liked? @software %>
$(".likes-btn").addClass("liked");
<% else %>
$(".likes-btn").removeClass("liked");
<% end %>
$(".likes-count").addClass("liked").html('<%= @software.get_upvotes.size %>');
РЕДАКТИРОВАТЬ: Или когда я меняю свою домашнюю страницу с:
<%= link_to like_software_path(@software), class:"like-btn", method: :put, remote: true do %>
<button class="btn btn-warning">
<span><p><i class="fa fa-thumbs-up fa-lg" aria-hidden="true"></i></p></span>
</button>
<% end %>
<span class="likes-count"> <%= @software.get_upvotes.size %> </span>
У меня есть ошибка:
No route matches {:action=>"upvote", :controller=>"softwares", :id=>nil}, missing required keys: [:id]