У меня есть questions
, у которого есть пять choices
, из которых один ИСТИНА для choices.is_correct.
В настоящее время у меня есть цикл ERB, отображающий вопрос и возможные варианты ответов, с вариантами, рандомизированными в упорядоченном порядке.list (<li>
).
В отдельном цикле ERB мне нужно отобразить правильный ответ в виде соответствующей метки <li>
(A, B, C, D или E).
Я чувствую, что это может быть возможно через какую-то локальную переменную, но ни один из моих тестов пока не работает.Должны ли работать локальные переменные, или я подхожу с неправильной перспективы?
Мой текущий ERB для раздела вопрос / ответ:
<% @free_questions.each_with_index do |question, i| %>
<div class="row justify-content-center">
<div class="col-lg-10">
<% @a = ("a".."z").to_a %>
<h5>Question <%= i+1 %>: <%= question.name %></h5>
<p>
<ol type="A">
<% @free_choices.where(question: question.id).sort_by{rand}.each do |choice| %>
<li><%= choice.name %></li>
<% end %><br />
</ol>
</p>
<% @free_choices.where(question: question.id, correct: TRUE).each do |choice| %>
<div class="accordion" id="accordionExample">
<% if choice.question.context.present? or choice.question.image.attached? %>
<div class="card">
<div class="card-header" id="headingC<%= i+1 %>">
<h5 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseC<%= i+1 %>" aria-expanded="true" aria-controls="collapseC<%= i+1 %>">
CLICK FOR QUESTION CONTEXT
</button>
</h5>
</div>
<div id="collapseC<%= i+1 %>" class="collapse" aria-labelledby="headingC<%= i+1 %>" data-parent="#accordionExample">
<div class="card-body">
<p>
<% if choice.question.image.attached? %>
<img src="<%= url_for(choice.question.image) if choice.question.image.attached? %>" class="rounded float-center" alt="context image for this question">
<% end %>
<!--TODO: Add more useful image alts here-->
<%= simple_format(choice.question.context) %>
</p>
</div>
</div>
</div>
<% end %>
<div class="card">
<div class="card-header" id="headingA<%= i+1 %>">
<h5 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseA<%= i+1 %>" aria-expanded="true" aria-controls="collapseA<%= i+1 %>">
CLICK FOR ANSWER
</button>
</h5>
</div>
<div id="collapseA<%= i+1 %>" class="collapse" aria-labelledby="headingA<%= i+1 %>" data-parent="#accordionExample">
<div class="card-body">
<p>
Correct Answer: <b><%= choice.name %></b>
</p>
<p>
Explanation: <%= raw(choice.question.explanation) %>
</p>
</div>
</div>
</div>
</div>
<% end %>
<hr />
</div>
</div>
<% end %>
РЕДАКТИРОВАТЬ: Добавление моделей ниже
question.rb
class Question < ApplicationRecord
before_validation :assign_questionable
belongs_to :questionable, polymorphic: true
has_many :choices, :dependent => :destroy
accepts_nested_attributes_for :choices, allow_destroy: true
choice.rb
class Choice < ApplicationRecord
belongs_to :question