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

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

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

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

JavaScript

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

Q&A

解決済

1回答

911閲覧

Routing Errorを直したい

jus

総合スコア60

Ruby on Rails 6

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

JavaScript

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

0グッド

0クリップ

投稿2022/05/30 05:05

編集2022/05/30 13:26

前提

rails で投稿アプリを作っています。
以前までは、いいねやコメントの削除はできていましたが、

Routing Error
No route matches [GET] "/posts/1/likes/1"
このようなエラーが出るようになりました。

サイトなどで調べたのを基に、
javascriptについて調べていじっていたのが原因かなと考えています。

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

Routing Error No route matches [GET] "/posts/1/likes/1"

該当のソースコード

routes.rb resources :posts do resources :likes, only: [:create, :destroy] resources :comments, only: [:create, :destroy] end
apprication.js import Rails from "@rails/ujs" import Turbolinks from "turbolinks" import * as ActiveStorage from "@rails/activestorage" import "channels" import "script.js" import 'jquery' import 'jquery_ujs' import "bootstrap"; import "../stylesheets/application"; Rails.start() Turbolinks.start() ActiveStorage.start()
apprication.html <!DOCTYPE html> <html> <head> <title>Test</title> <meta name="viewport" content="width=device-width,initial-scale=1"> <%= csrf_meta_tags %> <%= csp_meta_tag %> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.14.0/css/all.css"> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> </head>
webpack/enviroment.js const { environment } = require('@rails/webpacker') const webpack = require('webpack') environment.plugins.prepend('Provide', new webpack.ProvidePlugin({ $: 'jquery/src/jquery', jQuery: 'jquery/src/jquery' }) ) module.exports = environment
Gemfile gem 'devise' gem 'ancestry' gem 'roo' gem 'jquery-rails'
show.html <div id="like_btn_<%= @post.id %>"> <%= render 'likes/like', post: @post %> </div> <% if user_signed_in? && current_user.id == @post.user_id %> <%= link_to '編集する', edit_post_path(@post.id) %><br> <%= link_to '削除する', post_path(@post.id),method: :delete, "data-confirm"=>"本当に消しますか?" %><br> <% end %> <%= link_to '投稿一覧ページへ', posts_path %> <div class="comment-wrapper"> <p>コメント件数:<%= @comments.count %></p> <% if user_signed_in? %> <%= form_with(model: [@post, @comment], local: true) do |f| %> <%= f.text_area :content %> <%= button_tag type: "submit" do %> <i class="far fa-comments"></i> コメントする <% end %> <% end %> <% end %> <% @comments.each do |comment| %> <div class="comments-index mb-2"> <%= comment.user.name %> <%= comment.created_at.strftime("%Y-%m-%d %H:%M") %><br> <%= comment.content %> <div class="d-flex"> <% if comment.user == current_user %> <div class="comment-delete"> <%= link_to "削除", post_comment_path(comment.post, comment), method: :delete, class: "btn-sm btn-danger" %> </div> </div> </div> <% end %> <% end %> </div>
_like.html <% if user_signed_in? %> <% if current_user.already_liked?(post) %> <%= link_to post_like_path(post), method: :delete, remote: true do %> ♥<%= @post.likes.count %> いいね <% end %> <% else %> <%= link_to post_likes_path(post), method: :post, remote: true do %> ♡<%= @post.likes.count %> いいね <% end %> <% end %> <% else %> <i class="fas fa-heart"></i><%= post.likes.count %> <% end %>

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

なにをどうしていいのかわからない状態であり、
なにが導入されていて導入されていないのか訳が分からない状態になってしまっています。
消したほうがいい記述などがあれば教えていただきたいです。

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

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

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

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

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

jus

2022/05/30 05:42

投稿の削除もできない状態でした。 link_to method: : deleteがすべて機能していないという感じです。 急にこのようなことになってしまいました
guest

回答1

0

ベストアンサー

[GET] "/posts/1/likes/1" ですと show だと思いますが
resources :likes, only: [:create, :destroy]
となっているので show はありません、ということですね。

もし GET でなく DELETE にしたいのなら link_to の書き方か、js の問題です。
js いじる前も show はなく deleteしかなかったのなら、jsいじったのが原因かな。
もとに戻して動きを確認して、そのあと少しずつ修正していく、ってことですね

投稿2022/05/30 11:40

winterboum

総合スコア23331

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

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

jus

2022/05/30 12:40

回答ありがとうございます。 どこを直したらいいとかわかりますか? 数時間粘っても解決できなかったので よろしければ伺いたいです。
winterboum

2022/05/30 12:49

動いた時と今の両方載ります? (明日は一日だめなので、明後日の手すきになります)
winterboum

2022/05/30 12:49

ああ、Viewも載せてね
jus

2022/05/30 13:28

すいません 動いた時のは載せれませんでいた。 jsいじった以外、Controller,View,Routeなどは一切触れていないので、 おっしゃる通りjsが問題かと思います。
jus

2022/05/30 14:07

初期のアプリと見比べ、js関連で追加した記述をすべて消したら直りました。 お世話になりました。 機会があればまたよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問