回答編集履歴

10

require("jquery") を削除した方が良いのではないか、提案。

2020/06/06 16:39

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -1,3 +1,45 @@
1
+ 【追記3】
2
+
3
+
4
+
5
+ TakeshiAoyamaさんも気づかれているようですが、jquery_ujs は@rails/ujs に置き換わっているようです。
6
+
7
+
8
+
9
+ jquery を積極的に利用していないのであれば、 app/javascript/packs/application.js から、
10
+
11
+
12
+
13
+ ```
14
+
15
+ require("jquery")
16
+
17
+ ```
18
+
19
+
20
+
21
+ を削除した方が良いかもしれません。
22
+
23
+
24
+
25
+  参考までに Rails 6 でデフォルトで作られている当該箇所を記載します。
26
+
27
+
28
+
29
+ ```javascript
30
+
31
+ require("@rails/ujs").start()
32
+
33
+ require("turbolinks").start()
34
+
35
+ require("@rails/activestorage").start()
36
+
37
+ require("channels")
38
+
39
+ ```
40
+
41
+
42
+
1
43
  【追記2】
2
44
 
3
45
 

9

似たような記事を見つけました。

2020/06/06 16:39

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -1,4 +1,40 @@
1
- 【追記】
1
+ 【追記
2
+
3
+
4
+
5
+ 似たような記事を見つけました。
6
+
7
+
8
+
9
+ [Railsの削除のルーティンがうまく行かない Unknown action The action 'show' could not be found for BlogsController - Qiita](https://qiita.com/yoshinyan/items/194d3c4dcc0f246b1ad1)
10
+
11
+
12
+
13
+ app/assets/javascripts/application.js に
14
+
15
+
16
+
17
+ ```
18
+
19
+ //= require jquery_ujs
20
+
21
+ ```
22
+
23
+
24
+
25
+ を追記してみてください。
26
+
27
+
28
+
29
+ - [forms - ruby on rails link_to delete method not working - Stack Overflow](https://stackoverflow.com/questions/12997167/ruby-on-rails-link-to-delete-method-not-working)
30
+
31
+
32
+
33
+ ※Rails6 だとこの構成になっていないようなので別のファイルを修正する必要がありそうです。
34
+
35
+
36
+
37
+ 【追記1】
2
38
 
3
39
  [Ruby on Rails チュートリアル:実例を使って Rails を学ぼう](https://railstutorial.jp/)の[コラム 3.2. GETやその他のHTTPメソッドについて](https://railstutorial.jp/chapters/static_pages?version=5.1#aside-get_etc)では、以下のように書かれています。
4
40
 

8

Railsガイドへのリンクを追加

2020/06/06 16:22

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -52,7 +52,13 @@
52
52
 
53
53
 
54
54
 
55
- 参考: [使用するアクションへのルーティングだけを設定 - Ruby on Rails入門](https://www.javadrive.jp/rails/routing/index7.html#section2)
55
+ 参考:
56
+
57
+
58
+
59
+ - [4.6 ルーティングの作成を制限する / Rails のルーティング - Railsガイド](https://railsguides.jp/routing.html#%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AE%E4%BD%9C%E6%88%90%E3%82%92%E5%88%B6%E9%99%90%E3%81%99%E3%82%8B)
60
+
61
+ - [使用するアクションへのルーティングだけを設定 - Ruby on Rails入門](https://www.javadrive.jp/rails/routing/index7.html#section2)
56
62
 
57
63
 
58
64
 

7

不要なメソッドを記載するように追記

2020/06/06 15:43

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -39,6 +39,20 @@
39
39
  に対応するメソッドは実装されていますか?
40
40
 
41
41
 
42
+
43
+ show メソッドが不要であれば、config/routes.rb でその旨を記載する必要があるかと思います。
44
+
45
+
46
+
47
+ ```
48
+
49
+ resources :articles, :except => :show
50
+
51
+ ```
52
+
53
+
54
+
55
+ 参考: [使用するアクションへのルーティングだけを設定 - Ruby on Rails入門](https://www.javadrive.jp/rails/routing/index7.html#section2)
42
56
 
43
57
 
44
58
 

6

問題の本質について追記

2020/06/06 15:39

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -1,3 +1,49 @@
1
+ 【追記】
2
+
3
+ [Ruby on Rails チュートリアル:実例を使って Rails を学ぼう](https://railstutorial.jp/)の[コラム 3.2. GETやその他のHTTPメソッドについて](https://railstutorial.jp/chapters/static_pages?version=5.1#aside-get_etc)では、以下のように書かれています。
4
+
5
+
6
+
7
+ > これは、ブラウザがPATCHとDELETEをネイティブでは送信しないからです。しかし、Ruby on Railsなどの多くのWebフレームワークは、ブラウザがこれらの操作のリクエストを送信しているかのように見せかける技術 (偽装) を駆使して、PATCHとDELETEという操作を実現しています。
8
+
9
+
10
+
11
+ なのでブラウザーの開発者ツールで見ても GET でのアクセスに見えます。
12
+
13
+
14
+
15
+ 問題の本質は、以下のエラーメッセージかと思います。
16
+
17
+
18
+
19
+ ```
20
+
21
+ The action 'show' could not be found for ArticlesController
22
+
23
+ ```
24
+
25
+
26
+
27
+ ちなみに
28
+
29
+
30
+
31
+ ```
32
+
33
+ article GET /articles/:id(.:format) articles#show
34
+
35
+ ```
36
+
37
+
38
+
39
+ に対応するメソッドは実装されていますか?
40
+
41
+
42
+
43
+
44
+
45
+ 【問題の本質とは関係ありません。】
46
+
1
47
  [Getting Started with Rails — Ruby on Rails Guides](https://guides.rubyonrails.org/getting_started.html) の例に倣って、
2
48
 
3
49
 
@@ -13,20 +59,6 @@
13
59
 
14
60
 
15
61
  とした場合、どうなりますか?
16
-
17
-
18
-
19
- 【追記】
20
-
21
- [Ruby on Rails チュートリアル:実例を使って Rails を学ぼう](https://railstutorial.jp/)の[コラム 3.2. GETやその他のHTTPメソッドについて](https://railstutorial.jp/chapters/static_pages?version=5.1#aside-get_etc)では、以下のように書かれています。
22
-
23
-
24
-
25
- > これは、ブラウザがPATCHとDELETEをネイティブでは送信しないからです。しかし、Ruby on Railsなどの多くのWebフレームワークは、ブラウザがこれらの操作のリクエストを送信しているかのように見せかける技術 (偽装) を駆使して、PATCHとDELETEという操作を実現しています。
26
-
27
-
28
-
29
- なのでブラウザーの開発者ツールで見ても GET でのアクセスに見えます。
30
62
 
31
63
 
32
64
 

5

DELETE について追記

2020/06/06 15:22

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -13,6 +13,20 @@
13
13
 
14
14
 
15
15
  とした場合、どうなりますか?
16
+
17
+
18
+
19
+ 【追記】
20
+
21
+ [Ruby on Rails チュートリアル:実例を使って Rails を学ぼう](https://railstutorial.jp/)の[コラム 3.2. GETやその他のHTTPメソッドについて](https://railstutorial.jp/chapters/static_pages?version=5.1#aside-get_etc)では、以下のように書かれています。
22
+
23
+
24
+
25
+ > これは、ブラウザがPATCHとDELETEをネイティブでは送信しないからです。しかし、Ruby on Railsなどの多くのWebフレームワークは、ブラウザがこれらの操作のリクエストを送信しているかのように見せかける技術 (偽装) を駆使して、PATCHとDELETEという操作を実現しています。
26
+
27
+
28
+
29
+ なのでブラウザーの開発者ツールで見ても GET でのアクセスに見えます。
16
30
 
17
31
 
18
32
 

4

本家の同様の部分に倣ったらどうなるか、確認

2020/06/06 15:13

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -1,3 +1,21 @@
1
+ [Getting Started with Rails — Ruby on Rails Guides](https://guides.rubyonrails.org/getting_started.html) の例に倣って、
2
+
3
+
4
+
5
+ ```erb
6
+
7
+ <%= link_to 'delete', article_path(article), method: :delete,
8
+
9
+ data: { confirm: 'Are you sure?' } %>
10
+
11
+ ```
12
+
13
+
14
+
15
+ とした場合、どうなりますか?
16
+
17
+
18
+
1
19
  【以下、勘違いです。】
2
20
 
3
21
 

3

内容が不適切であるため、追記

2020/06/06 15:03

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -1,3 +1,7 @@
1
+ 【以下、勘違いです。】
2
+
3
+
4
+
1
5
  ```erb
2
6
 
3
7
  <%= link_to 'destroy', article_path(article), method: :delete %>

2

routes について追記

2020/06/06 14:52

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -27,3 +27,15 @@
27
27
 
28
28
 
29
29
  と宣言されているので。
30
+
31
+
32
+
33
+ routes も以下のように `articles#destroy` となっていますし。
34
+
35
+
36
+
37
+ ```
38
+
39
+ DELETE /articles/:id(.:format) articles#destroy
40
+
41
+ ```

1

理由を追記

2020/06/06 14:27

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -7,3 +7,23 @@
7
7
 
8
8
 
9
9
  では?
10
+
11
+
12
+
13
+ ```ruby
14
+
15
+ def destroy
16
+
17
+ @article.destroy
18
+
19
+ flash[:success] = "Article deleted"
20
+
21
+ redirect_to root_url
22
+
23
+ end
24
+
25
+ ```
26
+
27
+
28
+
29
+ と宣言されているので。