2014-12-11 1 views
1

최근에 나는 퀴즈 페이지를 결과 페이지로 가져 오려고 노력했습니다. (StanBoyet 덕분에 마침내 그것을 관리했다고 생각합니다).레일 :이 퀴즈 및 결과 페이지를 과도하게 조작 했습니까?

사용자 모델 및 컨트롤러가 있고 로그인 (Devise 사용)이 정상적으로 작동합니다. QuizAnswers 모델과 컨트롤러 및 모든 테이블이 데이터베이스에 있습니다. 나도 ResultsController가있다. 내 퀴즈 형태로

Rails.application.routes.draw do 
    devise_for :users 

    root :to => 'home#index' 

    get "elearning" => "home#elearning" 
    get "howitworks" => "home#howitworks" 
    get "leadershipstyles" => "home#leadershipstyles" 
    get "whattypeofleader" => "quizzes#new" 
    get "showmetheskills" => "home#showmetheskills" 
    get "safeguarding" => "home#safeguarding" 
    get "toolsforthejob" => "home#toolsforthejob" 
    get "whatnext" => "home#whatnext" 
    get "congratulations" => "home#congratulations" 
    get "teamwork" => "home#teamwork" 
    get "facilitation" => "home#facilitation" 
    get "planning" => "home#planning" 
    get "communication" => "home#communication" 

    resources :quizzes 
    resources :results 
    resources :quiz_answers 

    resources :users do 
    resources :posts 
    end 
end 

, 내가합니다 ( QuizAnswers#new 작용에 의해 액세스 가능) form_for @quiz_answers을 통과 :

def new 
    @user = current_user 
    @quiz_answer = current_user.quiz_answers.build 
end 

(나는 또한 시도 여기

routes.rb (자원 주)입니다 , 대체, @quiz_answer = QuizAnswer.new)

제출을 클릭하면 QuizAnswers#create 동작이 실행되고

def create 
    redirect_to results_path 
end 

어떤 results#index (ResultsController#index 행동)을 가리키는 (레이크 노선이 날을 말한다) I는 다음과 같이 설정 한 어떤 : 이런 그래도 제출을 클릭하면, 내가 받고 있어요

def index 
    # in order to access all the results in our view... 
    @results = QuizAnswer.find(current_user.id) 
end 

오류 :

은 'ID'= 35

와 QuizAnswer를 찾을 수 없습니다 나는 두 가지 질문이 있습니다

current_user의 ID에 대한 참조로 새 QuizAnswers를 어떻게 설정합니까? (QuizAnswers에는 일반적인 id 특성과 user_id 특성이 있습니다.)

둘째,이 모든 것이 끔찍하게 설계되었거나 그냥 '레일스 방식'입니까? (내가 잘못하고 있다면, 어떻게하면 좋을지 설명해주십시오.)

답변

0

이 줄은 매우 이상하다 :

@results = QuizAnswer.find(current_user.id) 

당신은

@results = QuizAnswer.where(user_id: current_user.id) 
#or 
@results = current_user.quiz_answers 
+0

OK로 변경해야합니다. 첫 번째 행은 해당 행에서 '해시를 정수로 변환 할 수 없습니다'라는 오류를 발생시킵니다. 두 번째 옵션은 오류를 발생시키지 않습니다. 거기에서 QuizAnswer 속성에 액세스하는 방법을 알아봐야 할 것입니다. BTW - 왜 기호가 끝에서 콜론을 사용하여 입력되는 경우가 있습니까? 그게 가장 놀라운 일은 아닌 것 같습니다 ... – moosefetcher

+0

1. 고정 2. 그들은 해시의 끝에 콜론을 입력 할 수 있습니다. 'find (user_id : current_user.id)'는'find ({user_id => current_user.id})와 같은'find ({user_id : current_user.id})'와 같습니다. –

+0

확인. 그 다중 구문은 모호함을 야기하는 것으로 보인다. 약간의 의미와 좌절. 하지만 고마워, 또! – moosefetcher