На странице mov ie, такой как "/ batman", есть кнопка с надписью "Seen This". При щелчке он увеличивает значение seens_count на 1.
В консоли rails я вижу, что он увеличивается только на единицу, но мое частичное увеличение JS увеличивается на 2. Если я обновлю sh страницу после нажатия кнопка возвращается к 1.
Почему отображается 2 вместо 1? Когда фактическое значение seens_count равно 1.
/ movies / show. html .erb:
<div id="count-seens">
<%= @movie.seens_count %> (Shows 2 after clicking Ajax button, should show 1)
<%= @movie.seens.count %> (Correctly shows 1 after clicking Ajax button)
</div>
<%= link_to "I've Seen This", movie_create_seen_path(movie), method: :post, remote: true, class: "button" %>
/ movies / seens / create. js .erb
$("#count-seens").html("<%= j render partial: 'movies/count_seens', locals: { movie: @movie } %>");
seens_controller.rb:
def create
@movie.seens.where(user_id: current_user.id).first_or_create
respond_to do |format|
format.html { redirect_to @movie }
format.js
end
end
seen.rb:
belongs_to :movie, counter_cache: true
У меня также есть некоторые проверки для определенных c фильмов. Для этих фильмов пользователи не могут видеть, но для этих страниц counter_cache увеличивается на 1. Когда я обновляю sh страницу, она возвращается к 0 - как и должно быть. В любом случае, похоже, что у каждого счетчика кеша есть призрак "+1".