Rails アプリの /index パスは、ログインしているユーザーには 1 つのページを表示し、管理者ユーザーにはまったく別のページを表示し、ログインしていないユーザーにはまったく別のページを表示する必要があります。
したがって、1 つのコントローラー (HomeController)、1 つのアクション (インデックス)、3 つのビューです。
これを 2 つの方法で実装できます。
- 正しいことをするように
if
句を挿入します。views/home/index.html.erb
- http://guides.rubyonrails.org/layouts_and_rendering.htmlの2.2.12 Finding Layoutsで説明されているように、何らかの方法で条件付きロジックをコントローラーに入れ (コントローラーにユーザーが誰であるかを見つけさせる)、それに応じて別のレイアウトをレンダリングします。
私は後者の解決策が正しいと強く感じています。しかし、ユーザーコントローラーがまったく異なるコントローラーであるため、それを実装する方法がわかりません。ホームコントローラーは、どのビューをレンダリングするかを決定するために現在のユーザーが誰であるかをどのように見つけることができますか?