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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails

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

Q&A

0回答

1034閲覧

devise-token-authのルーティングを追加したい。

IRIESS

総合スコア45

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails

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

0グッド

0クリップ

投稿2021/06/20 10:52

前提・実現したいこと

現在devise-token-authで認証行うユーザーに、プロフィール画像を登録できる機能を実装しようとしています。Railsのactive storage を使用したいと考えているのですが、いろいろ試行錯誤するうちに、deviseで自動設定されるルーティングのほかに以下のルートを追加したい状況になりました。(formDataを送信するにはpost送信が必要。devise-token-authのユーザ編集はput、またはpatch)

POST /api/user/update(.:format) api/user/registrations#update

そして以下が現在のroutes.rbファイルです

routes

1namespace :api do 2 resources :users 3 mount_devise_token_auth_for 'User', at: 'user', controllers: { 4 registrations: 'api/user/registrations' 5 } 6 devise_scope :user do 7 post 'user/update', to: 'user/registrations#update' 8 end 9 end

そして以下が生成されるルーティングです

//略 GET /api/user/sign_up(.:format) api/user/registrations#new GET /api/user/edit(.:format) api/user/registrations#edit PATCH /api/user(.:format) api/user/registrations#update PUT /api/user(.:format) api/user/registrations#update DELETE /api/user(.:format) api/user/registrations#destroy POST /api/user(.:format) api/user/registrations#create GET /api/user/validate_token(.:format) devise_token_auth/token_validations#validate_token POST /api/user/update(.:format) api/user/registrations#update //略

思った通りのルーティングが生成されています。

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

しかし以下のエラーになり先に進めない状況になってしまっています。

Could not find devise mapping for path "/api/user/update". This may happen for two reasons: 1) You forgot to wrap your route inside the scope block. For example: devise_scope :user do get "/some/route" => "some_devise_controller" end 2) You are testing a Devise controller bypassing the router. If so, you can explicitly tell Devise which mapping to use: @request.env["devise.mapping"] = Devise.mappings[:user]

試したこと

スコープでラップしろと書かれていますが、ラップしている気がします。
このエラーへの対処方法、そもそもルートを増やす方法が間違えているなどありましたら、ご教授よろしくお願いします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問