前提・実現したいこと
Railsで投票アプリを作成しています。
投票ボタンを非同期通信で実装中に以下のエラーメッセージが発生しました。
js.hamlファイルですが、create,destroyともに下記のエラーが発生しております。
発生している問題・エラーメッセージ
console
1VM694:1 Uncaught SyntaxError: Unexpected token '<' 2 at processResponse (rails-ujs.js:283) 3 at rails-ujs.js:196 4 at XMLHttpRequest.xhr.onreadystatechange (rails-ujs.js:264)
該当のソースコード
app/views/contents/_votes_controller.rb
ruby
1class VotesController < ApplicationController 2 before_action :set_choice 3 4 def create 5 @vote = Vote.create(vote_params) 6 @votes = Vote.where(choice_id: @choice.id) 7 @choices = Choice.all 8 end 9 10 def destroy 11 vote = Vote.find_by(vote_params) 12 vote.destroy 13 @votes = Vote.where(choice_id: @choice.id) 14 @choices = Choice.all 15 end 16 17 private 18 def vote_params 19 params.permit(id: @choice.id).merge(user_id: current_user.id, content_id: @choice.content_id, choice_id: @choice.id) 20 end 21 22 def set_choice 23 @choice = Choice.find(params[:id]) 24 end 25end 26
app/views/contents/_vote.html.haml
ruby
1- if user_signed_in? 2 - if choice.vote_user(current_user.id) 3 = button_to choice_vote_path(id: choice.id, content_id: content.id, choice_id: choice.id), method: :delete, id: "vote-btn", remote: true do 4 ⭐️ delete 5 %span 6 = choice.votes_count 7 - else 8 = button_to choice_votes_path(id: choice.id, content_id: content.id, choice_id: choice.id), id: "vote-btn", remote: true do 9 ⭐️ create 10 %span 11 = choice.votes_count 12- else 13 ⭐️ not signin 14 %span 15 = choice.votes_count
app/views/votes/create.js.haml
ruby
1:javascript 2 $("#vote-choice.id").html( 3 "j(render partial: 'contents/vote', locals: {choice: @choice, votes: @votes, vote: @vote })");
app/views/votes/destroy.js.haml
ruby
1:javascript 2 $("#vote-choice.id").html("= j(render partial: 'contents/vote', locals: { votes: @votes })");
試したこと
syntaxエラーということで、記述ミスを疑い確認しましたが、自分ではなかなか見つけられず、アドバイスいただけると幸いです。
何卒、よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Ruby 2.6.5
Ruby on Rails 6.0.0
あなたの回答
tips
プレビュー