Railsアプリケーションで現在のユーザーの表示ビューをルートするにはどうすればよいですか?Railsで現在のユーザーの表示ビューをルートする方法は?
私は
authenticated :user do
root :to => "users#show"
end
ような何かをしたいが、どのように私はこれに現在のユーザーのIDを渡すのですか?
ありがとうございました
Railsアプリケーションで現在のユーザーの表示ビューをルートするにはどうすればよいですか?Railsで現在のユーザーの表示ビューをルートする方法は?
私は
authenticated :user do
root :to => "users#show"
end
ような何かをしたいが、どのように私はこれに現在のユーザーのIDを渡すのですか?
ありがとうございました
以下は私のために働きました。 routes.rbをで
:users_controller.rbで
root to: 'users#current_user_home'
:
def current_user_home
redirect_to current_user
end
いつも「現在の」ユーザーか任意のユーザーですか?
現在のユーザーの場合は、IDを指定せずにすべてを同じページに誘導し、コントローラのアクションで現在のユーザー(セッションなどから)を取得し、ビューに渡します。
こんにちはマイケル、あなたが言っていることを見ていますが、自分の状況が少し複雑なので自分自身を混乱させると思います。あなたが私がこれを考えるのを助けることができるならば、感謝します。 current_userのルートは、現在のユーザーのIDでusers/showにする必要があります。ユーザは自分のショー・ビューだけを見ることができ、誰も誰も見ることができません。この場合、show controllerを '@user = current_user'に変更することができます。しかし、管理者モデルもあり、管理者はすべてのユーザーの表示ビューを見ることができます。これを処理する最善の方法は何ですか?ショーコントローラ、または別のアプローチの条件付きで?あなたの考えをありがとう。 –
現在のユーザーのIDは、URLにあってはなりません。セッションに保存する必要があります。だからあなたはそれをルートに通す必要はありません。
編集: あなたのコメントを読んだ後、私はあなたが現在のユーザーのビューを表示するためのprofile
のような別のアクションを定義することができると思います。私は、私は、ユーザ固有のルートである必要があり、パスにリダイレクトrequest.path == root_path
場合ならば、私はチェックbefore_filter
をした
if current_user.is_admin?
@user = User.find params[:id]
else
@user = current_user
end
ありがとうxdazz、私はあなたが意味することを理解していますが、私はまだ表示ビューを表示するのに問題があります。もう少し詳しくは、MIchaelへの私のコメントを参照してください。何か指摘していただければ幸いです。 –
@AndyHarvey私の編集を参照してください。 – xdazz
ありがとうxdazz、私はあなたの2番目のソリューションを考えていた。しかし私の状況では、現在のユーザーは他のユーザーのプロフィールへのリンクを見ることができます。現在、これらのリンクをクリックすると、認証エラーが発生します。 @ user = current_userを設定すると、他のユーザーへのリンクをクリックすると、現在のユーザープロファイルに根付きます。これは奇妙です。プロフィールのアクションはうまくいくかもしれませんが、もっと簡単な方法があると思っていました。私はそれを試してみましょう。 –
:よう
またはあなたのusers/show
アクションでは、いくつかのコードを追加します。 routes.rb
に設定されたroot_pathは、ユーザーごとのユーザー固有のルートではないため、無限のリダイレクトはありません。 flash.keep
を実行して、フラッシュメッセージがリダイレクトから生き残るようにしてください。
EDIT: 読書Q & A及びコメントは、あなたがすでに持っているかを理解しようとしている、とあなたはまだ何をする必要があります。あなたはshow
アクションをURLに:id
なしでレンダリングするためにルーティングをセットアップするのに成功しましたか?もしそうなら、多分あなたは、あなたのコントローラ内でこのような何かshow
アクションが必要になります。
if params[:id].nil? # if there is no user id in params, show current one
@user = current_user
else # if there is the user id in params just use it,
# maybe get 'authorization failed'
@user = User.find params[:id]
end
は確かに提案されているものよりもRailsの4+でこれを行うにはセクシーな方法があります。 –