🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Devise

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

Ruby on Rails 6

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

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1605閲覧

【rails】devise_token_authでRouting Errorが起こり登録画面に遷移できない

widget11

総合スコア221

Devise

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

Ruby on Rails 6

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

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/01/01 19:06

rails6.0.3(APIではなく標準モード)
ruby2.6

devise_token_authを使いtoken認証を試しています。
curlやpostmanを使い登録する方法はよく紹介されているのですが、webのログイン画面から登録を行いたく登録画面に遷移したいのですが、登録をwebで行う前に登録画面に遷移ができず困っています。(curlを使いユーザー登録は確認できています)

登録画面に当たる /api/v1/auth/sign_upへのルーティングは以下のように確認できているのですが、こちらのURLを叩いてもRouting Errorとエラーが出て該当画面に遷移できないという状態です
イメージ説明

以下がルーティングやコントローラーのコード、また階層になります。

#routes.rb Rails.application.routes.draw do namespace :api do namespace :v1 do mount_devise_token_auth_for "User", at: "auth", controllers: { registrations: 'auth/registrations' } end end end #controller controllers/api/v1/auth/resisrations_controller.rb class Api::V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController end #viewの階層 views/api/v1/auth/resitrations/new.html.erb

恥ずかしい話、見様見真似で書いた個人的に分かっていないことが複数あり
まずルーティングの at: "auth" と controllers: {registrations:'auth/registrations'}
という文法がよく分かっていません。
調べたりはしたのですがこちらについては検索に引っかからずと言う状態で、このatとcontrollersというオプションによりどのようなルーティングになっているかが定かではなく、どの階層にコントローラーやviewを配置すれば良いかがそもそも分かっていないです。

もう一つにdevise_token_authのgithub
を見に行ったのですが、登録画面に該当するアクション(new)が見受けられないように思います。
つまり、今僕はcontrollers/api/v1/auth/resistrations_controller.rb
DeviseTokenAuth::RegistrationsControllerを継承している為、こちらのdevisetokenauthのメソッドを使用できる状態にいるはずなのですが、そもそもnewアクションがない為、遷移ができないのではと思いました。
devisetokenauthを利用するに当たりnewアクションはオーバライドするというより、新規でアクションを作成する必要があるのでしょうか?

こちら以上をどのように修正すれば、登録画面(/api/v1/auth/sign_up)がローカルで開けますでしょうか?
お手数をおかけしますがよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

devise_token_authを使ったことがないのであまり詳しいことはわかっていません。
わかる範囲での回答になりますので、より詳しい方がいらっしゃったらそちらを見ていただいた方がよさそうです。


登録画面に該当するアクション(new)が見受けられない

このgemは、フロントエンドをrails以外で実装して、認証処理をバックエンドのrailsで実装したいときに、その認証用のバックエンドAPI処理を実装するためのgemのように見えました。

ですので、もしかしたらですが、登録画面を表示するタイミングにおいては「まだAPI呼び出しは必要ない」(?)とgem開発者が判断した可能性もありそうだと考えています。
もしこの通りであれば、「登録画面」用のアクションはこのgemには用意されておらず、全て自ら実装する必要がある可能性はありそうです。

実際に利用したことのある方がいれば、もう少しはっきりわかるかもしれませんね...。


どの階層にコントローラーやviewを配置すれば良いか

これについては、貼って下さっている画像の一番右の列を参照してもらえたらよいかと思います。
そちらに書いてある通りで、

app/controllers/auth/registrations_controller.rbapp/views/auth/registrations/new.html.erb

になるかと思います。

その左側の列は、サーバーに飛んでくるURLのPathで、そのPathを受け取ったら最も右側の列のcontroller内のアクションに処理を飛ばすのがroutingの役割かと思います。


その他

ruby

1# routes.rb 2mount_devise_token_auth_for "User", at: "auth", controllers: { 3 registrations: 'auth/registrations' 4}

これは必要でしょうか??

以下の記事を見ると、defaultのroutingのままで問題なければ、routeへの追加記載はしなくてもよさそうです。

〇devise token auth を使って簡単に早くAPIを作る 1
https://masahiro.me/2017/01/devise-token-auth-1/#i-3

〇deviseのコントローラーを編集したい時
https://qiita.com/Masahiro_T/items/6bc49a625b437a7c2f45#devise%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%97%E3%81%9F%E3%81%84%E6%99%82

そのあたりも考慮して、routesへの記載を考えてみてもよいかもしれません。


追記 -ドキュメントへの入り口-

イメージ説明

投稿2021/01/02 04:41

編集2021/01/02 13:32
siruku6

総合スコア1382

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

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

widget11

2021/01/02 13:19

回答ありがとうございます!!!! 仰る通り見た感じ画面はVueなりで作ってくれって感じのライブラリみたいですね。 usageやroutingのご共有ありがとうございます!
siruku6

2021/01/02 13:31

ちょっと公式ドキュメントが見つけにくかったですが、Github内のどこかにドキュメントか、ドキュメントへのリンクがあるはずなので、困ったときは探してみるとよいかもしれません。 今回のgemのドキュメントへの入り口は回答の末尾に追記しておきます(わかりにくかった...)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問