2017-01-16 18 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を作成します。コントローラを提出しますか?

は私が間違ってそれに近づいたり、私はそれがより効率的であると私は必要なものを達成するために動作します使用することができ、レール方式があり、この間違っているのでしょうか?

私の現在のコードは、常にfalseを返し、users_inputはデータベースに挿入されていません。

+0

誰もが任意のアイデアがありますか? – user7391609

答えて

0

私の見たところでは、どちらの場合でも投稿を作成してから、コンテンツとメンバーIDを割り当てて保存しません。

メソッドは、オブジェクトを初期化し、また、あなたがニーズを割り当てる任意の値を再度保存するた後、それを保存し作成することに注意してください。だから私はあなたのコードを調整しています。ここでは、サブミットオブジェクトが初期化され、次にcontentと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 

これがうまくいき、正しいと思われる場合はアップしてください!

乾杯!

+0

私はあなたの質問をupvotedしているので、回答をupvoteするのに十分なポイントがある! –

+0

数分後にこれを試行し、動作するかどうかをお知らせします。 – user7391609

+0

お知らせ下さい! –

関連する問題