Rails upvote / downvote с использованием Ajax с acts_as_votable - PullRequest
0 голосов
/ 11 апреля 2019

Все еще довольно плохо знаком с Rails.Я использовал камень act_as_votable для создания кнопок повышения и повышения, чтобы позволить пользователям повышать / понижать видео, но я не могу заставить их переходить с повышающего / понижающего (и наоборот) и обновлять счетчик каждый раз, когда они нажимают, не обновляя страницу.Я попытался следовать другим подобным ответам без удачи.Вот что я пытался реализовать.

index.html.erb

<% @videos.each do |x| %>
<p> <div class="child">  
  <video controls width="310" height="230" src="<%= x.file %>"></video>
        <div class="btn-group">
            <%= link_to upvote_video_path(x), method: :put, remote: :true, id: "like-count", class: "btn btn-default btn-sm" do %>
            <span class="glyphicon glyphicon-chevron-up"></span>
            Upvote
           <div id="video-<% x.id %>"> <%= x.get_upvotes.size %> </div>
            <% end %>
            <% end %>
          </div>
          </div>

 <%= x.title %> 

</div> </p>
<% end %>

upvote.js.erb (находится в папке просмотра видео)

$("#video-<%= x.id %>").html('<%= x.get_upvotes.size %>');

defupvote

    @video = Video.find(params[:id])
    @ip = request.remote_ip
    was_it_upvoted = Ipaddresstracker.find_by(ipaddress: @ip, videoid:   @video.id)
    if was_it_upvoted
      @video.downvote_by User.first
      was_it_upvoted.delete
    else
      Ipaddresstracker.create(:ipaddress => @ip, :videoid => @video.id)
      @video.vote_by voter: User.first, :duplicate => true
    end
    respond_to do |format|
      format.html { redirect_back fallback_location: root_path }
      format.json { render layout:false }
  end

Маршруты

resources :videos do#, only: [:index, :show] do
  member do
    put "upvote", to: "videos#upvote"
    put "downvote", to: "videos#downvote"
  end
end

application.js

//= require introjs
//=require rails-ujs
//= require turbolinks
//= require_tree .

application.html.erb (head tag)

<head>
  <title>Workspace</title>
    <%= csrf_meta_tags %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

    <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
</head>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...