В приложении 4 рельсов я использую link_to для отправки upvote на сообщения через json.Ajax: успех не работает в rails app
Вот что у меня в контроллер сообщений:
def upvote
@post = Post.find(params[:id])
@post.liked_by current_user
respond_to do |format|
format.html {redirect_to :back }
format.json { render json: { count: @post.get_upvotes.size } }
end
end
Вот что у меня есть, на мой взгляд
<%= link_to like_post_path(post), method: :put, class: 'vote', remote: true, data: { type: :json } do %>
<%= image_tag('vote.png') %>
<%= content_tag :span, post.get_upvotes.size %>
<% end %>
<script>
$(document)
.on('ajax:send', '.vote', function() { $(this).addClass('loading'); })
.on('ajax:complete', '.vote', function() { $(this).removeClass('loading'); })
.on('ajax:error', '.vote', function(e, xhr, status, error) { console.log(status); console.log(error); })
.on('ajax:success', '.vote', function (e, data, status, xhr) {
$(this).find("span").html(data.count);
$(this).find("img").attr("src", '<%= asset_path 'voted.png' %>');
});
</script>
Когда я нажимаю на ссылку, голосование проходит в формате JSON запрос, я вижу это в своем журнале:
Processing by PostsController#upvote as JSON
Но по какой-то причине, я отключил javascript, не работает. Ни счетчик, ни значок не обновляются. Как я могу это исправить? Это связано с turbolinks, это связано с тем, где я размещаю javascript?
Выполняется javascript вообще (из точки останова или некоторых вызовов на console.log там) –