-
20-12-2019 - |
문제
지금까지 읽은 모든 질문과 해결 방법에도 불구하고 아직 devise가 포함된 로그인된 사용자 프로필 페이지를 표시하는 데 아무런 효과가 없었습니다.나는 내 경로에서도 여러 가지를 시도했습니다.내 오류는 현재 표시됩니다. "ID 없이 사용자를 찾을 수 없습니다."나는 고안의 초보자이기 때문에 마음에 들지만 약간 실망했습니다.어떤 도움이라도 주시면 감사하겠습니다.아직 학습 단계에 있습니다.감사해요.
class UsersController < ApplicationController
before_filter :authenticate_user!, :except => [:show]
after_action :verify_authorized
def index
@users = User.all
authorize User
end
def show
@user = User.find(params[:id])
authorize @user
end
노선
Rails.application.routes.draw do
devise_for :users
devise_scope :user do
get 'users/sign_in' => 'devise/sessions#new'
get 'users/sign_out' => 'devise/sessions#destroy'
end
resources :user
match 'users/show', to: 'users#show', via: 'get'
root to: 'pages#home'
end
해결책
match 'users/show', to: 'users#show', via: 'get'
이 줄은 URL을 라우팅할 것임을 나타냅니다. users/show
컨트롤러#action에 users#show
.그리고 컨트롤러 내부에서 다음과 같은 ID를 가진 사용자를 찾고 있습니다. params[:id]
.단, id 매개변수는 절대 전달하지 마세요.일반적으로 ID는 URL에 전달됩니다(예: users/show/:id
).그것이 당신의 실수의 원인입니다.
해결 방법은 달성하려는 목표에 따라 다릅니다.URL을 통해 ID를 전달할 수도 있고, 원하는 경우 users/show
로그인한 사용자 프로필만 표시하려면 컨트롤러 작업(예: 프로필이라고 함)을 추가한 다음 사용자 ID로 세션 변수를 설정/가져오고 사용자 보기로 리디렉션합니다.
제휴하지 않습니다 StackOverflow