ruby '2.6.6'
rails '6.1.3.2'
投稿へいいねできる機能を実装しているのですが,Rails6.0.3からRails6.1.3.2へ移行したらいいねボタン(link_to)でのPOSTリクエストが送れなくなり,下記のようなエラーが出るようになってしまいました.
Routing Error
No route matches [GET]
Chormeのデベロッパーツールでリンクを見たらdata-method="post"となっているのですが,エラーメッセージを見る感じはgetとなってしまっているようです.
deleteのリンクについてもエラーが出ます.
Unknown action
The action 'show' could not be found for MicropostsController
付け加えて,POSTが送れなくなったのと同時にRailsのバージョンの移行にともなってか,jqueryも反応しなくなってしまいました(こちらは解決しました).javascriptが効いていないせいでpost, deleteが送れなくなってしまったのでしょうか?
jqueryが読み込まれなくなった問題に関してはapplication.jsをRails6の仕様に変えたら解決しました.一応このファイルも載せておきます.
Railsのバージョン移行が今回の問題の原因かとは思うのですが,Dockerの不具合で作業をやり直したという経緯もありそちらが関係している可能性もあります.ただ特別ファイル内容を変えたというわけではないので関係はしていないようには思っています.
###いいね機能
app/views/likes/_like.html.erb
<%= link_to micropost_likes_path(micropost), method: :post, class: "like" do %> <svg role="img" xmlns="http://www.w3.org/2000/svg" width="19px" height="19px" viewBox="0 0 23 23" aria-labelledby="favouriteIconTitle" stroke="#bfbfbf" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none" color="black"> <title id="favouriteIconTitle">Favourite</title> <path d="M12,21 L10.55,19.7051771 C5.4,15.1242507 2,12.1029973 2,8.39509537 C2,5.37384196 4.42,3 7.5,3 C9.24,3 10.91,3.79455041 12,5.05013624 C13.09,3.79455041 14.76,3 16.5,3 C19.58,3 22,5.37384196 22,8.39509537 C22,12.1029973 18.6,15.1242507 13.45,19.7149864 L12,21 Z"/> </svg> <span class="conut"><%= micropost.likes.count %></span> <% end %>
###routes.rb
. . . resources :microposts, only: [:show, :create, :destroy, :new] do resources :contents, only: [:index, :show] resources :bookmarks, only: [:create, :destroy] resources :likes, only: [:create, :destroy] end . . .
###application.js
import Rails from "@rails/ujs" import Turbolinks from "turbolinks" import * as ActiveStorage from "@rails/activestorage" import "channels" import "jquery" import "jquery.jscroll.min.js" import "../stylesheets/application" Rails.start() Turbolinks.start() ActiveStorage.start()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。