2016-12-11 3 views
1

私はRails 5を使用しています。ユーザーがログインしているときに、 '/ users/4'アクションを汎用の '/ダッシュボード'ホームリンクに置き換えたいとします。私はまた、ユーザーが '/ users/##'をブラウザに入力するのをやめ、代わりに '/ dashboard'を訪れることを許可したいと思います。これはどうすればいいですか?現在、私のconfig/routes.rbをして私はRailsユーザコントローラでダッシュボードリンクを作成するにはどうすればよいですか?

get '/dashboard', to: 'users#show' 
    resources :users 

を持っていると私のusers_controller.rbファイルに私が

def show 
    @user = User.find(params[:id]) 
    @user_subscriptions = UserSubscription.find_active_subscriptions_by_user(@user) 
    end 

を持っているしかし、私は私のブラウザで「/ダッシュボード」を訪問したときに、現在、私が得ますエラー

は=

私はshowアクションを無効にするが、大成功に/ダッシュボードを許可するように私のルートを設定するにはどうすればよい

「ID」を持つユーザーが見つかりませんでした慎重に上のアクションに移動しますか?

+0

ている操作を行うことができ、コントローラでの操作を行うことができ、あなたのビューになりました。この

get '/dashboard' => 'users#show', as: :dashboard 

のようなものですあなたは工夫をしていますか? –

+0

Nooooooooooooooo(余分な文字が必要なので、コメントは受け付けません) –

+0

良い提案が必要な場合は、あなたのatuthenticationにdeviseを使用してください。必要なものをはるかに簡単な方法で作成する方法を提供します。また、Facebook、Twitter、Googe +などのOAuthプロバイダで認証するために必要な構造を提供します。 –

答えて

1

私は何をしたいことは、あなたが

link_to 'Dashboard', dashboard_path(current_user)

、あなたが

def show 
    params[:id] == current_user.id unless params[:id] 
    @user = User.find(params[:id]) 
    @user_subscriptions = UserSubscription.find_active_subscriptions_by_user(@user) 
    end 
+0

しかし、この 'current_user'はあなたが作った宝石から選んでいるのですか? OPはdeviseを使用していません。私は私のコメントでそれを提案した。 –

+1

それは本当ですか、私は彼らが何を使用しているかを知り、 'current_user'を' session [:user] 'を使って何に設定する必要があります – MZaragoza

+0

なぜあなたは再びユーザーを探していますか?すでに 'current_user'に入っています。 – unkmas

関連する問題