문제

지금까지 읽은 모든 질문과 해결 방법에도 불구하고 아직 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로 세션 변수를 설정/가져오고 사용자 보기로 리디렉션합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top