質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1986閲覧

Rails6.1.3.2へ移行後link_toでのPOST,DELETEができなくなった

nao_1

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/05/12 19:43

編集2021/05/13 01:21

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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

yarn add turbolinksを実行したら解決しました.
jqueryが読み込めなかったときにturbolinksを削除しており,それが関係していたようです

投稿2021/05/13 05:50

nao_1

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以前、全く同じ相談に回答したことがあったので共有しておきます

teratail / link_toのmethod: :postが上手く機能しない

これを試してみるといかがでしょうか?

と思いましたが、、、rails6.0向けの内容であり、質問者さんは6.1を使われているようなので、また別の対策が必要そうですね...

投稿2021/05/13 04:54

編集2021/05/13 04:56
siruku6

総合スコア1382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nao_1

2021/05/13 04:59

回答ありがとうございます! app/assets/javascripts/application.js に import Rails from "@rails/ujs" の記載があるので問題ないように思うんですけど…上手くいかないです…
siruku6

2021/05/13 05:00

すみません、私の間違いでした。 全く別の問題だと今は思っています><
nao_1

2021/05/13 05:03

いえ!回答していただきありがとうございます;;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問