次のスキームに従う Rails アプリケーションを作成する方法がわかりません。
このサイトは主に、1 つまたは 2 つの保護されていない「静的」ページと「/」から直接提供されるログイン ページに加えて、ユーザーの認証を必要とする「保護された」内部パスで構成されています ( root_path
)。
一般的に、ユーザーは にアクセスしてログインするフローに従い、root_path
認証されていないときに保護されたページにアクセスしようとすると、 に戻されroot_path
ます。ユーザーが のフォームにログインすると、root_path
に送信されますhome_path
(他のページの保護を介して送信された場合でも、root_path
つまり、スマート転送はありません。後で追加する可能性があります。)
さらに、認証済みの状態で を参照しようとするとroot_path
、要求がすぐに に転送されhome_path
ます。home_path
のページには、ログアウトするためのリンクが含まれます。その結果、ユーザーはすぐに に移動しますroot_path
。
私の質問:
これを設定するには、routes.rb エントリはどのようになりますか? Users
コントローラーとコントローラーがあり、コマンドライン認証 (irb コンソール経由) が既に機能していると仮定Sessions
すると、このシステムを機能させるルートとコントローラー メソッドの正しい組み合わせは何ですか? 私は非常に混乱しています!
それが役立つ場合、ここに私がこれまでに持っているものがありますが、これを動作状態にしてテストすることさえできないほど迷っています。
次のようなルートファイルがあります。
MyAppRails::Application.routes.draw do
resources :sessions, only: [:new, :create, :destroy]
root to: "sessions#new"
match '/signout', to: 'sessions#destroy', via: :delete
match "/home" => 'users#home'
end
UsersController にはhome
メソッドのみがあり、SessionsController にはnew
、、、create
およびdestroy
メソッドがあります。
サインイン フォームをどこに送信すればよいかわからないという点で特に行き詰まっていますsessions#new
。何らかの形で指定する必要があると思いますが、それがどのように機能するのかがよくわかりません。
ありがとう。