2017-01-16 55 views
1

我正在建立一個問題和答案網站,用戶輸入一個問題,我把用戶輸入並與數據庫進行比較,如果答案正確,我將問題並將其添加到記分牌,但我有一個問題,用戶輸入沒有通過模型傳遞,並且當我設置@user_input = params[:content]時,它始終返回null,我相信這是因爲我正在使用命名空間/嵌套楷模。問題與答案 - 用戶輸入不被接受

的行動計劃:

Get the current answer from the database for the current_question_id, and set as a varaiable 

Check Users input against the answer in the database 
    if question_id & user_submitted_answer exists in database 
     create record in submission's table with status == correct 
    else 
     create record in submissions table with status == Incorrect 

型號:

會員/問題

class Members::Question < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :point 
    belongs_to :event 

    has_many :submissions 
    has_one :answer 
end 

提交

class Submission < ActiveRecord::Base 
    belongs_to :question 
    belongs_to :member 
end 

路線:

Rails.application.routes.draw do 

    #Root Routes 
    root 'home#index' 
    get 'home/index' 
    get 'home/about' 

    mount RailsAdmin::Engine => '/eriadmin', as: 'rails_admin' 

    #Devise Controller 
    devise_for :members 

    #Members namepsace 
    get '/members/', to: 'members/dashboard#index', as: 'members_dashboard', only: [:show] 

    resources :answers 

    namespace :members do 
    resources :questions, only: [:index,:show] do 
     resources :submissions 
    end 
    end 
end 

提交控制器 創建方法

@answer_check = Answer.where("question_id = ? AND content = ?",set_members_question, set_user_submission) 
    if @answer_check.present? 

     flash.alert = 'Answer There' 
     @submission = @members_question.submissions.create(params[:submission].permit(:question_id)) 
     @submission.member_id = current_member.id 

     @submission.content = Submission.find_by(params[:content]) 


    else 
     flash.alert = 'NOPE NOT There' 
     @submission = @members_question.submissions.create(params[:submission].permit(:question_id)) 
     @submission.content = "Incorrect" 
     @submission.member_id = current_member.id 
    end 

def set_user_submission 
    @members_question = Submission.find(params[:content]) 
end 

的user_submitted_answer:內容沒有被從形式傳遞的 「問題/顯示」 進入提交控制器?

我這樣做是錯誤的,接近它錯誤或是否有一個rails方法,我可以使用更有效率,並努力實現我所需要的?

我當前的代碼總是返回false,並且users_input未被插入到數據庫中。

+0

任何人有任何想法? – user7391609

回答

0

從我看到的情況來看,您正在創建任一案例中的提交內容,然後分配內容和成員ID並且不保存它。

請記住,create方法會初始化對象並保存,之後您分配的任何值都需要再次保存。所以我調整了你的代碼,如下提​​交對象初始化,然後你添加內容和member_id,最後保存它。

if @answer_check.present? 
    flash.alert = 'Answer There' 
    @submission = @members_question.submissions.new(params[:submission].permit(:question_id)) 
    @submission.member_id = current_member.id 

    @submission.content = Submission.find_by(params[:content]) 
    @submission.save 
else 
    flash.alert = 'NOPE NOT There' 
    @submission = @members_question.submissions.new(params[:submission].permit(:question_id)) 
    @submission.content = "Incorrect" 
    @submission.member_id = current_member.id 
    @submission.save 
end 

希望這個工程,請upvote,如果認爲是正確的!

乾杯!

+0

我已upvoted您的問題,以便您有足夠的點upvote答案! –

+0

將在幾分鐘內嘗試這個,會讓你知道它是否有效。 – user7391609

+0

當然!讓我知道! –