現在ポートフォリオ作成中ですがルーティングでつまづいたため教えていただけないでしょうか。
複数Deviseモデルのログイン後の遷移先指定で、うまくルーティングを設定できないため、pathの書き方を教えていただきたいです。
やりたいことは、Ownerログイン後に、Ownerのマイページに遷移できるようにしたいです。
(userは今後使用予定ですがまだ完成していないので一旦Ownerについて教えていただけると幸いです。)
deviseでログイン後の遷移先指定は下記のようにコントローラーに記載しています。
書き方がわからないため一旦root_pathに設定しています。
application_controller.rb def after_sign_in_path_for(resource) case resource when Owner root_path when User users_home_path end end
rootは下記のように記載していて、:idに引数が入ったhomeへ遷移したいです。
routes.rb get 'ownersinfo/:id/home' => "ownersinfo#home"
いくつかpathの設定を検索して記載してみたのですが、各々引数が必要なルーティングにしてしまったせいか、エラーが出てしまいました。
記載した内容以外で判断に必要な情報がありましたら追記いたしますのでお手数ですが教えていただけないでしょうか。
routes.rbについて省略無しで追記します。
Rails.application.routes.draw do root "home#top" get 'ownersinfo/:id/home' => "ownersinfo#home" get "ownersinfo/new" => "ownersinfo#new" get "ownersinfo/:id/edit" => "ownersinfo#edit" post "ownersinfo/:id/update" => "ownersinfo#update" post "ownersinfo/:id/reset_image" => "ownersinfo#reset_image" get "home/top" => "home#top" get "home/search" => "home#search" get "home/keyword_search" => "home#keyword_search" devise_for :owners, controllers: { sessions: 'owners/sessions', passwords: 'owners/passwords', registrations: 'owners/registrations' } devise_for :users, controllers: { sessions: 'users/sessions', passwords: 'users/passwords', registrations: 'users/registrations' } # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
rootは一旦アプリケーションのトップに遷移するようにしていますが、
遷移したいのは"ownersinfo#home"になります。
ownersinfo_home_path等試しましたが、引数が必要なためかルーティングがうまくいきませんでした。
他に追記する必要がある情報等ありましたらお手数ですがまた教えていただけないでしょうか。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
pathhelper名ですが、_urlや_pathといったヘルパーメソッドの使い方を参考に下記のようにroutesとcontroller書き直してみました。
get "ownersinfos/:id/edit" => "ownersinfo#edit"
(ownersinfoを複数形にしました)
application_controller.rb def after_sign_in_path_for(resource) case resource when Owner edit_ownersinfo_path(:id) when User users_home_path end end
しかし上記でもNoMethodErrorと出てしまいます。root_pathにした場合動作はするので、やはりpathhelper名が間違えているようです。
rails routes で調べる方法
申し訳ありませんが上記がわからないためどのようなことをすればよいか教えていただけないでしょうか。
rails routesを実行した結果の一部を記載いたします。
何度も申し訳ありませんがご確認お願いいたします。
重要そうなところを抜粋したつもりですが抜けがありましたらおしえてください。
Controller#Action root GET / home#top GET /ownersinfo/:id/home(.:format) ownersinfo#home ownersinfo_new GET /ownersinfo/new(.:format) ownersinfo#new GET /ownersinfo/:id/edit(.:format) ownersinfo#edit POST /ownersinfo/:id/update(.:format) ownersinfo#update POST /ownersinfo/:id/reset_image(.:format) ownersinfo#reset_image home_top GET /home/top(.:format) home#top home_search GET /home/search(.:format) home#search home_keyword_search GET /home/keyword_search(.:format) home#keyword_search
回答1件
あなたの回答
tips
プレビュー