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

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

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

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

JavaScript

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

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

Q&A

1回答

426閲覧

Rails6 method: :post ができない(getになってしまう)

ryo1173

総合スコア1

Ruby on Rails 6

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

JavaScript

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

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

1グッド

1クリップ

投稿2023/06/06 19:01

実現したいこと

https://techtechmedia.com/favorite-function-rails/
こちらを参考にいいね機能の実装をしてます。

発生している問題・エラーメッセージ

method: :postとしているのにgetで処理されてしまう為Routing Errorとなってしまう
エラーメッセージ
ActionController::RoutingError (No route matches [GET] "/like/5"):

該当のソースコード

slim

1- if current_user.liked_by?(@spot.id) 2 td 3 = link_to destroy_like_path(@spot), class: "like-link", method: :delete, remote: true do 4 i.fa.fa-heart.unlike-btn 5 = @spot.likes.count 6- else 7 td 8 = link_to create_like_path(@spot), class: "like-link", method: :post, remote: true do 9 i.fa.fa-heart.like-btn 10 = @spot.likes.count

試したこと

https://blog.ezic.info/43631.html
rails-ujs は読み込んでました。

ルーティングも確認しましたが、問題はなさそうです。
検証ツールでも確認してみましたがdata-method="post"となってました。
methodを{}で囲ってみたりもしましたが変わりませんでした。

補足情報(FW/ツールのバージョンなど)

ruby 3.0.2p107
rails (~> 6.1.4)

GitHub
https://github.com/Ryo0116/Saitamap

よろしくお願いいたします。

shinoharat👍を押しています

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

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

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

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

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

shinoharat

2023/06/07 05:13

Github を拝見しました。 症状を聞いた感じだと、やはり rails-ujs が動作していないのではと思われます。 app/javascript/packs/application.js の7行目に alert("webpacker!!") -- app/javascript/application.js の7行目に alert("importmap!!") と追記して画面をリロードすると、どちらの alert が表示されますか?
shinoharat

2023/06/07 05:17

また、ブラウザの検証ツールでどのようなHTMLが出力されているか確認し、質問文に載せてもらえると助かります。 Google Chrome の場合は [要素を右クリック]→[検証] で出ます。 他のブラウザでも、名前は違いますが似た機能があります。 おそらく以下のような出力になっていると思いますが、念のためちゃんと data-method が出ているか確認したいです。 <a href="..." data-method="...">(アイコン)</a>
ryo1173

2023/06/08 22:06

遅くなりましてすみません。 追記しリロードしましたがどちらのアラートも表示されません。。。 検証ツールではこのようになってます。 <a class="like-link" data-remote="true" rel="nofollow" data-method="post" href="/like/5">
shinoharat

2023/06/09 00:13

> 追記しリロードしましたがどちらのアラートも表示されません。。。 import が失敗しているのかもしれませんね。 両方の alert を1行目に移動させ、画面をリロードするとどうなりますか? > 検証ツールではこのようになってます。 ありがとうございます。 HTMLは問題なさそうですね。
ryo1173

2023/06/09 11:32

>両方の alert を1行目に移動させ、画面をリロードするとどうなりますか? 移動してみましたが変わりません・・・。
guest

回答1

0

application.jsにimport "@hotwired/turbo-rails"」とあるので、
これを有効していると、3行目を以下のように記載すると、postメソッドが有効になります。

link_to create_like_path(@spot), class: "like-link", data: { "turbo-method": :post }, remote: true

具体的には、「method: :post」を「data: { "turbo-method": :post }」に書き換えます。

投稿2023/06/17 08:18

ryuii

総合スコア438

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

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

ryo1173

2023/06/18 19:59

ありがとうございます。教えていただいたコードに置き換えてみたのですが、変わらずGETになってしまいました・・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問