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

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

ただいまの
回答率

90.47%

  • Ruby

    7945questions

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

  • Devise

    253questions

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

deviseを使用して、ユーザーがサインインをした後のページの移動先を変更するにはどうすれば良いのでしょうか?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 691

現在、アプリの開発をしている、駆け出しプログラマーです。

deviseを使用して、一通りのログイン機能を実装させることができたのですが、after_sign_up_path_forを使用して、ユーザーがサインインをした後にroot画面に遷移するのではなく、別に用意したページに遷移させたいと思っています。

調べた上で、users controller上にregistrations_controller.rbを新たに作成し、コントローラー上で”after_sign_up_path_for”を定義し、パスを指定したのですが、何度やってもrootで指定した画面に遷移してしまいます。どうすればafter_sign_up_path_for上に指定したパスへと画面を遷移することができるのでしょう?教えていただけると、幸いです。よろしくお願いいたします。

routes.rb

IntReviewProduct::Application.routes.draw do

  devise_for :users, controllers: {
    :registrations=>'users/registrations',
    :passwords=>'users/passwords',
    :sessions=>'users/sessions',
    :unlocks=>'users/unlocks',
    :omniauth_callbacks=>'users/omniauth_callbacks'
  }
  get "pages/notification"
  resources :abouts, only: :index
  resources :terms, only: :index
  resources :users, only: :show
  resources :products, only: :show do
    collection do
      get 'search'
    end
  end
    resources :reviews, only: [:new, :create] do
    collection do
      get 'search'
    end
  end
  root 'products#index'

end

registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController
  def after_sign_up_path_for(resource)
    pages_notification_path
  end
end


rake routesの表示結果

                  Prefix Verb   URI Pattern                       Controller#Action
        new_user_session GET    /users/sign_in(.:format)          users/sessions#new
            user_session POST   /users/sign_in(.:format)          users/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)         users/sessions#destroy
           user_password POST   /users/password(.:format)         users/passwords#create
       new_user_password GET    /users/password/new(.:format)     users/passwords#new
      edit_user_password GET    /users/password/edit(.:format)    users/passwords#edit
                         PATCH  /users/password(.:format)         users/passwords#update
                         PUT    /users/password(.:format)         users/passwords#update
cancel_user_registration GET    /users/cancel(.:format)           users/registrations#cancel
       user_registration POST   /users(.:format)                  users/registrations#create
   new_user_registration GET    /users/sign_up(.:format)          users/registrations#new
  edit_user_registration GET    /users/edit(.:format)             users/registrations#edit
                         PATCH  /users(.:format)                  users/registrations#update
                         PUT    /users(.:format)                  users/registrations#update
                         DELETE /users(.:format)                  users/registrations#destroy
       user_confirmation POST   /users/confirmation(.:format)     devise/confirmations#create
   new_user_confirmation GET    /users/confirmation/new(.:format) devise/confirmations#new
                         GET    /users/confirmation(.:format)     devise/confirmations#show
      pages_notification GET    /pages/notification(.:format)     pages#notification
                  abouts GET    /abouts(.:format)                 abouts#index
                   terms GET    /terms(.:format)                  terms#index
                    user GET    /users/:id(.:format)              users#show
         search_products GET    /products/search(.:format)        products#search
                 product GET    /products/:id(.:format)           products#show
          search_reviews GET    /reviews/search(.:format)         reviews#search
                 reviews POST   /reviews(.:format)                reviews#create
              new_review GET    /reviews/new(.:format)            reviews#new
                    root GET    /                                 products#index
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

自己解決しました。

after_sign_up_path_forは、userの確認を取れたのちにサインインをした後のパスであり、私はuserのconfirmationの為に、メールの設定を義務付けたので、ユーザーが新規登録画面を押しただけでは、このパスは作動しませんでした。

その代わりに、”after_inactive_sign_up_path_for”を使用することで、まだ本人確認が行われていない場合のサイトの遷移を指定することができました。

参考URL:
https://stackoverflow.com/questions/8003347/overriding-devise-after-sign-up-path-for-not-working

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • Ruby

    7945questions

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

  • Devise

    253questions

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

  • トップ
  • Rubyに関する質問
  • deviseを使用して、ユーザーがサインインをした後のページの移動先を変更するにはどうすれば良いのでしょうか?