0

RailsApps Stripe 튜토리얼을 진행하고 있습니다.Rails에서 Params에 접근하기 3.2

devise registration 컨트롤러를 통해 새 구독자를 만들면 content 컨트롤러를 통해 콘텐츠 페이지로 연결됩니다. 콘텐츠 페이지에 등록 할 때 만든 nameemail address을 사용하고 싶습니다. 하지만 매개 변수를 콘텐츠 컨트롤러로 가져올 수는 없습니다.

은 내가 content_controller@user = User.find(params[:id])를 넣어하지만 난 오류가 요청 정보> 랙 세션에서 나열하는 오류 페이지에서 "Couldn't find User without an ID".

수 : "warden.user.user.key"=>["User", [2],

는 그래서 2는 사용자 번호의 ID를 의미 하는가를 content_controller에 전달되었지만 액세스 할 수 없습니까?

+0

당신이 리디렉션하는 방법을 볼 수있는'devise_registration_controller.rb'와'content_controller.rb'의 내용을 지정? –

답변

0

나는 @ 사용자 = User.find ([ID] PARAMS)를 넣습니다.

이 오류는 content page에 사용자를 리디렉션 할 때 params[:id] = nil, 즉, 당신은 PARAMS 해시에 id 전달되지 않음을 의미합니다.

가능한 해결책 : Devise

  1. 당신은 현재 로그인 한 사용자의 인스턴스를 반환 current_user라는 도우미 메서드를 얻을. 따라서 직접 current_user을 사용하여 현재 로그인 한 사용자의 속성에 액세스 할 수 있습니다. 예를 들어 :

    은 현재 로그인 한 사용자의 nameemail 필드에 액세스하려면, 당신이 할 필요가 routes.rb에서

    current_user.name 
    current_user.email 
    
  2. content의 경로를 통해 사용자의 현재 로그인의 id을 통과하다 페이지 :

    ## Add :id dynamic segment to your content page route 
    get "content/:id", :to => "contents#action_name", :as => "content_page" 
    

    경로 세부 정보가 없으므로 요구 사항에 따라 위의 경로를 수정해야합니다. 당신이 아닌 다른 경로로 사용자를 리디렉션하려면 sign upcontent 페이지로 사용자를 리디렉션 할 때

    다음, 그냥 after_sign_up_path_for라는 이름의 ApplicationController 방법에서 현재 아래와 같이 로그인 한 사용자를 통과 (이 고안 메소드를 오버라이드 (override) 할 필요가 기본 root path) :

    def after_sign_up_path_for(resource) 
        content_page_path(resource) ## Provide the path and pass resource to it 
    end 
    
+0

@Mark 내 대답으로 문제가 해결 되었습니까? –