Skip to content

Commit

Permalink
Integrated question CRUD into quiz CRUD pages
Browse files Browse the repository at this point in the history
  • Loading branch information
sdflem committed Oct 26, 2018
1 parent 7f62924 commit 1d87092
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 22 deletions.
38 changes: 23 additions & 15 deletions app/controllers/multiple_choice_questions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,31 @@ def check_answer
end
end

def index
@multiple_choice_questions = MultipleChoiceQuestion.all
# render 'multiple_choice_questions/index.html.erb'
end

def show
@multiple_choice_question = MultipleChoiceQuestion.find(params[:id])
# render 'multiple_choice_questions/show.html.erb'
end
# def show
# @multiple_choice_question = MultipleChoiceQuestion.find(params[:id])
# # render 'multiple_choice_questions/show.html.erb'
# end

def new
begin
@quiz = Quiz.find(params[:quiz_id])
rescue
redirect_to quizzes_url, alert: 'Error: Quiz not found'
end
@multiple_choice_question = MultipleChoiceQuestion.new
# render 'multiple_choice_questions/new.html.erb'
end

def create
begin
@quiz = Quiz.find(params[:quiz_id])
rescue
redirect_to quizzes_url, alert: 'Error: Quiz not found'
end
@multiple_choice_question = MultipleChoiceQuestion.new(params.require(:multiple_choice_question).permit(:question, :answer, :distractor_1, :distractor_2, :distractor_3, :distractor_4))
if @multiple_choice_question.save
redirect_to multiple_choice_question_url(@multiple_choice_question), notice: 'Multiple choice question was successfully created.'
@quiz.questions << @multiple_choice_question
if @quiz.save
redirect_to quiz_url(@quiz), notice: 'Multiple choice question was successfully created.'
else
flash.now[:alert] = 'Error! Unable to create multiple choice question.'
render :new
Expand All @@ -58,10 +64,10 @@ def update
begin
@multiple_choice_question = MultipleChoiceQuestion.find(params[:id])
rescue
redirect_to multiple_choice_questions_url, alert: 'Error: Multiple choice question not found'
redirect_to quizzes_url, alert: 'Error: Multiple choice question not found'
end
if @multiple_choice_question.update(params.require(:multiple_choice_question).permit(:question, :answer, :distractor_1, :distractor_2, :distractor_3, :distractor_4))
redirect_to multiple_choice_question_url(@multiple_choice_question), notice: 'Multiple choice question was successfully updated.'
redirect_to quiz_url(@multiple_choice_question.quiz), notice: 'Multiple choice question was successfully updated.'
else
flash.now[:alert] = 'Error! Unable to update multiple choice question.'
render :edit
Expand All @@ -72,9 +78,11 @@ def destroy
begin
@multiple_choice_question = MultipleChoiceQuestion.find(params[:id])
rescue
redirect_to multiple_choice_questions_url, alert: 'Error: Multiple choice question not found'
redirect_to quizzes_url, alert: 'Error: Multiple choice question not found'
end
@quiz = @multiple_choice_question.quiz
@multiple_choice_question.destroy
redirect_to multiple_choice_questions_url, notice: 'Multiple choice question was successfully destroyed.'
redirect_to quiz_url(@quiz), notice: 'Multiple choice question was successfully destroyed.'
end

end
2 changes: 2 additions & 0 deletions app/views/multiple_choice_questions/_form.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<%= form_with model: multiple_choice_question, local: true do |form| %>
<%= hidden_field_tag :quiz_id, quiz_id %>

<div class="field">
<%= form.label :question %>
<%= form.text_field :question, class: 'form-control' %>
Expand Down
2 changes: 1 addition & 1 deletion app/views/multiple_choice_questions/edit.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<h1>Edit Multiple Choice Question</h1>

<%= render 'form', multiple_choice_question: @multiple_choice_question %>
<%= render 'form', quiz_id: @multiple_choice_question.quiz.id, multiple_choice_question: @multiple_choice_question %>

<p>
<%= link_to 'Back', multiple_choice_questions_path %>
Expand Down
2 changes: 1 addition & 1 deletion app/views/multiple_choice_questions/new.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<h1>New Multiple Choice Question</h1>

<%= render 'form', multiple_choice_question: @multiple_choice_question %>
<%= render 'form', quiz_id: @quiz.id, multiple_choice_question: @multiple_choice_question %>

<p>
<%= link_to 'Back', multiple_choice_questions_path %>
Expand Down
38 changes: 38 additions & 0 deletions app/views/quizzes/edit.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,46 @@

<h1>Edit Quiz</h1>

<h2>Quiz Meta-Data</h2>

<%= render 'form', quiz: @quiz %>

<h2 style="margin-top: 1.5rem">Quiz Questions</h2>

<table class="table table-sm">
<thead>
<tr>
<th scope="col">Question</th>
<th scope="col">Answer</th>
<th scope="col">Distractor 1</th>
<th scope="col">Distractor 2</th>
<th scope="col">Distractor 3</th>
<th scope="col">Distractor 4</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<% @quiz.questions.each do |question| %>
<tr>
<td><%= question.question %></td>
<td><%= question.answer %></td>
<td><%= question.distractor_1 %></td>
<td><%= question.distractor_2 %></td>
<td><%= question.distractor_3 %></td>
<td><%= question.distractor_4 %></td>
<td>
<%= link_to 'Edit', edit_multiple_choice_question_path(question) %>
<%= link_to 'Destroy', multiple_choice_question_path(question), method: :delete %>
</td>
</tr>
<% end %>
</tbody>
</table>

<p>
<%= link_to 'New Multiple Choice Question', new_multiple_choice_question_path(@quiz) %>
</p>

<p>
<%= link_to 'Back', quizzes_path %>
</p>
Expand Down
25 changes: 25 additions & 0 deletions app/views/quizzes/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,31 @@
<b>Description:</b> <%= @quiz.description %>
</p>

<table class="table table-sm">
<thead>
<tr>
<th scope="col">Question</th>
<th scope="col">Answer</th>
<th scope="col">Distractor 1</th>
<th scope="col">Distractor 2</th>
<th scope="col">Distractor 3</th>
<th scope="col">Distractor 4</th>
</tr>
</thead>
<tbody>
<% @quiz.questions.each do |question| %>
<tr>
<td><%= question.question %></td>
<td><%= question.answer %></td>
<td><%= question.distractor_1 %></td>
<td><%= question.distractor_2 %></td>
<td><%= question.distractor_3 %></td>
<td><%= question.distractor_4 %></td>
</tr>
<% end %>
</tbody>
</table>

<p>
<%= link_to 'Edit', edit_quiz_path(@quiz) %> |
<%= link_to 'Back', quizzes_path %>
Expand Down
8 changes: 3 additions & 5 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,17 @@

get 'multiple_choice_questions/:id/ask', to: 'multiple_choice_questions#ask', as: 'ask_multiple_choice_question'
post 'multiple_choice_questions/:id/ask', to: 'multiple_choice_questions#check_answer'
get 'multiple_choice_questions', to: 'multiple_choice_questions#index', as: 'multiple_choice_questions'
post 'multiple_choice_questions', to: 'multiple_choice_questions#create'
get 'multiple_choice_questions/new', to: 'multiple_choice_questions#new', as: 'new_multiple_choice_question'
post 'multiple_choice_questions', to: 'multiple_choice_questions#create', as: 'multiple_choice_questions'
get 'multiple_choice_questions/:id/edit', to: 'multiple_choice_questions#edit', as: 'edit_multiple_choice_question'
get 'multiple_choice_questions/:id', to: 'multiple_choice_questions#show', as: 'multiple_choice_question'
patch 'multiple_choice_questions/:id', to: 'multiple_choice_questions#update'
patch 'multiple_choice_questions/:id', to: 'multiple_choice_questions#update', as: 'multiple_choice_question'
put 'multiple_choice_questions/:id', to: 'multiple_choice_questions#update'
delete 'multiple_choice_questions/:id', to: 'multiple_choice_questions#destroy'

get 'quizzes/:id/home', to: 'quizzes#home', as: 'quiz_home'
get 'quizzes', to: 'quizzes#index', as: 'quizzes'
post 'quizzes', to: 'quizzes#create'
get 'quizzes/new', to: 'quizzes#new', as: 'new_quiz'
get 'quizzes/:quiz_id/multiple_choice_questions/new', to: 'multiple_choice_questions#new', as: 'new_multiple_choice_question'
get 'quizzes/:id/edit', to: 'quizzes#edit', as: 'edit_quiz'
get 'quizzes/:id', to: 'quizzes#show', as: 'quiz'
put 'quizzes/:id', to: 'quizzes#update'
Expand Down

0 comments on commit 1d87092

Please sign in to comment.