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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

ルーティング

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

Q&A

解決済

1回答

1952閲覧

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

IRIESS

総合スコア45

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

ルーティング

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

0グッド

0クリップ

投稿2021/06/19 10:32

前提・実現したいこと

devise-token-authを使用して認証機能を作成しており、現在以下のようなコードです

routes

1namespace :api do 2 resources :users 3 mount_devise_token_auth_for 'User', at: 'user', controllers: { 4 registrations: 'api/user/registrations' 5 } 6 end

bash

1 GET /api/user/cancel(.:format) api/user/registrations#cancel 2 GET /api/user/sign_up(.:format) api/user/registrations#new 3 GET /api/user/edit(.:format) api/user/registrations#edit 4 PATCH /api/user(.:format) api/user/registrations#update 5 PUT /api/user(.:format) api/user/registrations#update 6 DELETE /api/user(.:format) api/user/registrations#destroy 7 POST /api/user(.:format) api/user/registrations#create

今回は以下のようなルーティングに変更したいのですが、どのようにすればいいのでしょうか。

GET /api/user/cancel(.:format) api/user/registrations#cancel 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 POST /api/user/update(.:format) api/user/registrations#update //↑PUTからPOSTに変更したい。被ってしまうのでURLも変更したい。 DELETE /api/user(.:format) api/user/registrations#destroy POST /api/user(.:format) api/user/registrations#create

試したこと

namespace :api do resources :users mount_devise_token_auth_for 'User', at: 'user', skip: [:registrations] devise_for :user get '/user/sign_in', to: '/user/registrations#new' //中略 end

などと試してみましたが、うまくいきません。
devise-token-authのルートの変更方法のご教授をよろしくお願いいたします。

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

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

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

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

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

asm

2021/06/19 11:42

なんのためにルートを変更する必要がありますか?
IRIESS

2021/06/19 12:21

コメントありがとうございます! active recordを使用してプロフィール画像を登録できるようにしたくて調べたのですが、vue側からupdateアクションにformDataを送信する際にpostで送信しなければならないとのことでした。そうするとcreateアクションと被ってしまうのです。 解決策ありますでしょうか?
asm

2021/06/19 12:24

_method=putをパラメータに追加してもダメでしょうか?
IRIESS

2021/06/19 12:59

put送信でmethod="post"を設定したらrails側ではpostとして処理してくれるということでしょうか?
asm

2021/06/19 13:16

Rack::MethodOverrideがデフォルトで使われているので「_method」で設定できます。
IRIESS

2021/06/19 22:11

ありがとうございました!
IRIESS

2021/06/19 22:13

その通りの方法でmehodをpostで送るやり方は解決致しました!
IRIESS

2021/06/20 10:16

ベストアンサーにしたかったのですが、修正依頼となっているのでボタンが表示されていません。。。
guest

回答1

0

ベストアンサー

PATCH と同じURLのようですから、POSTでなくPUTでもなくPATCHにしてはだめなのですか?
どうしても POST である必要があるのでしたら、PUT のrouteは残りますが

mount_devise_token_auth_for 'User', at: 'user', controllers: { registrations: 'api/user/registrations' }

の直後に post "/api/user/update/:id" => "api/user/registrations#update"
などとしてみてはどうでしょう

投稿2021/06/19 13:24

winterboum

総合スコア23549

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

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

IRIESS

2021/06/19 22:11

ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問