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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Ruby on Rails

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

Q&A

解決済

1回答

3903閲覧

rails6でPostがGETと認識されてしまう

Ai_.

総合スコア2

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/08/03 03:03

前提・実現したいこと

<%= link_to("削除", "/posts/#{@post.id}/destroy", {method: "post"}) %>を使って、post routeに飛ばしたいです。

Rails6で投稿アプリ開発中にPostメソッドがGetメソッドとして認識されているためNo route matches [GET]になってしまいます。

この問題について調べるほど新たな問題が出てきて、何から手をつけて良いのかわからない状況です。

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

No route matches [GET]

該当のソースコード

~/app/views/posts/detail.html.erb~ <%= link_to("削除", "/posts/#{@post.id}/destroy", {method: "post"}) %> ~/config/routes.rb~ post "posts/:id/destroy" => "posts#destroy" ~app/controllers/posts_controller.rb~ def destroy redirect_to("/posts/index") end

試したこと

ここから本題なのですが上記問題を解決するために様々な問題が出てきました

1. rails routesを行うと

省略
POST /posts/:id/destroy(.:format)
省略

と出ており、routeではきちんとPostと認識されているように感じた。
なので https://teratail.com/questions/256667 こちらに『link_toでGET以外のメソッドを投げるには、JavaScriptの力が必要です。jquery-ujsあるいはrails-ujsといったJavaScriptライブラリは、読み込んでいますでしょうか?』 とあったため、
/review_app/app/javascript/packs/application.jsを確認すると
require("@rails/ujs").start()があったのでJavaScriptライブラリ書かれていました。

2 .ここは推測も混ざっていますが、

上記のJSが動作していないのかな?とかんがえ、
/review_app/app/views/layouts/application.html.erbの

<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

を以前消していたことを思い出し、これを復活させたところ、
Webpacker::Manifest::MissingEntryError in Posts#detail が出ました。

3 Webpacker::Manifest::MissingEntryError inを解決するため、

(https://teratail.com/questions/279759) こちらのサイトを確認し、
ubuntu:~/environment/review_app (master) $ bin/webpack-dev-server と打ったところ
yarn run v1.22.4
error Command "webpack-dev-server" not found.
と出てしまいました。

4 error Command "webpack-dev-server" not found. 

こちらを調べたところ、
https://qiita.com/___xxx_/items/69bc75c4b6625ddfb508 こちらの記事で「

解決コマンド
yarnのアップグレード

$ brew upgrade yarn
webpackerインストール

$ bundle exec rails webpacker:install
webpack-dev-server立ち上げ

$ bin/webpack-dev-server

とあったのですが、
environment/review_app (master) $ brew upgrade yarn

Command 'brew' not found, but can be installed with:

sudo apt install linuxbrew-wrapperと出てしまい、
sudo apt install linuxbrew-wrapper でインストールしたが
bundle exec rails webpacker:install と打つと、
conflict config/webpacker.yml
Overwrite /home/ubuntu/environment/review_app/config/webpacker.yml?  とでる。

まとめ

まずwebpack-dev-server の立ち上げについてご教授頂きたいのですが、 私の解釈の間違いでややこしくしている可能性もありますので、もし、根本原因がありましたら、そちらもご教授いただけたらとおもいます。
よろしくお願いします。

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

rails6
cloud9使用です

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

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

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

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

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

yoorwm

2020/08/03 03:07

linkでpostは無いですね。 htmlについて勉強すると良いかと思います。
maisumakun

2020/08/03 03:08

> linkでpostは無いですね。 htmlについて勉強すると良いかと思います。 いえ、Rails特有な処理でPOSTが可能となっています。
Ai_.

2020/08/03 03:09

<%= link_to("削除", "/posts/#{@post.id}/destroy", {method: "post"}) %> こちらはProgate を見本にしているのですが、かきまちがえているのでしょうか?
maisumakun

2020/08/03 03:10

yarn installは行いましたか?
Ai_.

2020/08/03 03:11

行なっています。 yarn install yarn install v1.22.4 [1/4] Resolving packages... success Already up-to-date. Done in 0.09s. このように表示されています。
maisumakun

2020/08/03 03:12

yarnはどうやってインストールしましたか?
Ai_.

2020/08/03 03:20

恐らく、yarn installで行ったと思います。 結構前にインストールしたので定かではありませんが、、、
maisumakun

2020/08/03 03:27

yarn「自体」をどうインストールしたか、ということです(もちろん最初はyarnがないので、「yarnから」インストールする、ということはできないです)。
CHERRY

2020/08/03 03:39

なぜ、POST で、クリックしたいのでしょうか?
Ai_.

2020/08/03 03:55

失礼しました yarn自体のインストールについてですがcloud9上でしていないと思います。どのようにインストールしたのか確認方法は出てこなかったので不明ですが、、 以前progateに沿ってPC上にてbrewをインストールしていたのですが、 cloud9上ではbrewをインストールしていません。 これは関係しているのでしょうか?
Ai_.

2020/08/03 05:53

postでクリックしたい理由としては、 progateとrailsチュートリアルでそのような方法をとっており、それに従っているためです。
Ai_.

2020/08/03 06:19

maisumakun様へ cloud9でyarn がインストールされていなかったようですので、 https://connect-solution.net/jp/2019/09/24/rails6-%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%82%92%E3%81%AA%E3%82%8B%E3%81%B9%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%8F%E8%AA%AC%E6%98%8E-cloud9%E3%81%AB%E3%81%A6/ こちらを参考にyarnインストールしました。 加えてprogate参考に、Homebrewとrbenvのインストールも完了したのですが、 しかし上記サイトの #設定を反映 $ source ~/.bash_profile からおかしくなり、 source ~/.bash_profile :a: command not found となるような状況になっております。
guest

回答1

0

自己解決

  • rails webpacker:install

    • 質問には全部Yで回答(git diffが出来ないため未確認ですが、不安であれば検証用ブランチなどでおこなってください。
  • この記事の手順でjqueryを導入

  • 投稿後削除リンククリックしdestroyアクションに入ることを確認

こちらで直りました

投稿2020/08/22 07:39

Ai_.

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問