Rails act_as_votable, использующий AJAX для остановки перезагрузки страницы - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь получить возможность повысить рейтинг с использованием act_as_votable без перезагрузки страницы, но я не уверен, как изменить маршруты, чтобы она работала

Контроллер

def upvote
    @video = Video.find(params[:id])
    @ip = request.remote_ip
    # Ipaddresstracker.delete_all
    if Ipaddresstracker.find_by(ipaddress: @ip)

    else
       Ipaddresstracker.create(:ipaddress => @ip, :upvoted => true, :upvotedcount => 1)
       @video.vote_by voter: User.first, :duplicate => true
    end
  # redirect_to :back
    respond_to do |format|
    format.html { redirect_to :back }
    format.js { render layout: false }
  end
end

View

<%= link_to like_video_path(x), method: :get, remote: true, class: "btn btn-default btn-sm" do %>

Маршрут

resources :videos do
  member do
    put "like", to: "videos#upvote"
    put "dislike", to: "videos#downvote"
  end
end

Error

ActionController :: RoutingError (Нет совпадений с маршрутом [GET] "/ videos / 53 / like"):

Ответы [ 2 ]

1 голос
/ 23 марта 2019

На самом деле, если у вас был Jquery, вы можете решить эту проблему с помощью Jquery. Если нет, попробуйте изменить это format.js { render layout: false }. Вам не нужно ничего визуализировать, чтобы вы могли установить render :nothing => true в своем блоке format.js

1 голос
/ 22 марта 2019

Маршрут ожидает запрос put. Измените параметр :method на :put

<%= link_to like_video_path(x), method: :put, remote: true, class: "btn btn-default btn-sm" do %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...