0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unknown actionで怒られてハマった

Posted at

はじめに

Ruby on railsの学習を始めて、数日たち順調だと思っていた矢先に半日、下記のエラーでハマったため備忘録として残します。

エラー

``` Unknown action The action 'show' could not be found for MessagesController ```

link_toでDELETEメソッドを呼ぼうとしたら発生。
コントローラーにshowアクションが無いと怒られてます。
パス、メソッドもあっているのに上記が発生してるので何かおかしいと思い諸々、調べてみました。

確認したこと

- 開発者モードやコード上に異常がないか - コード自体の内容や開発者モードで確認しただけなので割愛します。
  • コントローラーのprivate内にアクションを記載していないか

    • Rubyではprivateと記述すると以下全文privateになるためdestroyアクションが属してないか。
  • jquery_ujsが書いてあるか

  • app/assets/javascripts/application.js

//= require jquery
//= require jquery_ujs <-この行を足します

    - 上記のように追加しないとエラーになる場合があり、またjqueryを先に読み込ませないとエラーになります。

<h1>解決</h1>
コントローラーのlink_toメソッドをbutton_toメソッドに変更しました。
原因としてはlink_toがRubyのCSRF対策により外部アクセスとみなされアクセスが出来なかったようです。
下記の表に大まかな違いを記載しておきます。


|  |link_to  |button_to  |
|---|---|---|
|HTMLタグ  |a  |form  |
|httpリクエスト  |get  |post  |

簡単ですがこれで以上になります。

<h1>参考ページ</h1>
https://note.com/sugarsugarsweet/n/n3229169bca4f

https://qiita.com/yoshinyan/items/194d3c4dcc0f246b1ad1

https://qiita.com/y-temp4/items/2d50feb3ff0d65acdf67
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?