大変お世話になっております。
こちらのページを参照しながら現在「いいね」機能を実装している最中です。
[Rails]いいね機能の非同期での実装!!!
機能そのものは実装できたのですが、非同期通信が上手くできておりません。
色々調べた所、jqueryが読み込まれていないのではないか?というところまではたどり着けたのですが、そこから先が解決できません。
なお以下の手順でjqueryをインストールしております。
gemfileに
gem 'jquery-rails'
を追記
bundle installを実行
application.jsに以下を追記
//= require jquery3 //= require rails-ujs //= require_tree .
ローカルサーバーの再起動
以上です。
いいねボタンを押したときの検証ツールでは下記のエラーが起きております。
VM251:1 Uncaught ReferenceError: $ is not defined
at <anonymous>:1:1
at processResponse (rails-ujs.js:283)
at rails-ujs.js:196
at XMLHttpRequest.xhr.onreadystatechange (rails-ujs.js:264)
どなたかお力を貸して頂ければ幸いです。
以下コードです。
いいねボタンを実装するインデックスファイル
【index.html】
〜 <%= render partial: 'likes/like', locals: { nutrition: nutrition} %> 〜
【views/likes/_like.html.erb】
<div class="like-link" id="like-link-<%= nutrition.id %>"> <% if current_user.likes.find_by(nutrition_id: nutrition.id) %> <%= link_to unlike_path(nutrition.id), method: :delete, remote: true do %> <div class = "iine__button">❤️<%= nutrition.likes.count %></div> <% end %> <% else %> <%= link_to like_path(nutrition.id), method: :post, remote: true do %> <div class = "iine__button">♡️<%= nutrition.likes.count %></div> <% end %> <% end %> </div>
【views/likes/like.js.erb】
$("<%= @id_name %>").html("<%= j(render partial: 'likes/like', locals: {nutrition: @nutrition}) %>");
【views/likes/unlike.js.erb】
$("<%= @id_name %>").html("<%= j(render partial: 'likes/like', locals: {nutrition: @nutrition}) %>");
【app/javascript/packs/application.js】
// This file is automatically compiled by Webpack, along with any other files // present in this directory. You're encouraged to place your actual application logic in // a relevant structure within app/javascript and only use these pack files to reference // that code so it'll be compiled. //= require jquery //= require rails-ujs //= require turbolinks //= require_tree . require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require("channels") require("../delete") // Uncomment to copy all static images under ../images to the output folder and reference // them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>) // or the `imagePath` JavaScript helper below. // // const images = require.context('../images', true) // const imagePath = (name) => images(name, true)
ご指導頂ければ幸いです。
回答3件
あなたの回答
tips
プレビュー