0
0

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を先に読み込ませないとエラーになります。

解決

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

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

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

参考ページ

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