Я новичок в рельсах и работаю над созданием инструмента опроса. Вот как структурированы мои модели:
class Study < ApplicationRecord
has_many :questions, dependent: :destroy
validates :study_name, presence: true, length: { minimum: 5, maximum: 100 }
end
class Question < ApplicationRecord
belongs_to :study
has_many :answers, dependent: :destroy
validates :question, presence: true, length: { minimum: 5, maximum: 100 }
def next_question
study.questions.where('id > ?', id).first
end
end
class Answer < ApplicationRecord
belongs_to :question
belongs_to :participant
validates :text, presence: true, length: { minimum: 5, maximum: 100 }
end
class Participant < ApplicationRecord
has_many :answers, dependent: :destroy
end
Когда участник отвечает на опрос, ему показывают один вопрос за раз.
То, что я пытаюсь достичь, - это показать участнику текущий вопрос , на котором он из общего числа вопросов
Я могу чтобы получить общее количество вопросов с помощью этого кода:
<%=@study.questions.count %>
Но я не уверен, как получить текущий вопрос с тем, как я написал представление ответов в новом. html .erb. Вот код в этом файле:
<div class="wrap">
<h1 class="welcome-header study-name"><%= @study.study_name %></h1>
<div class="study-wave5"> <%= image_tag "wave5.svg" %></div>
<div class="section colour-section">
<h2><%= @question.question %></h2>
<h2> 1 out of <%=@study.questions.count %></h2>
<%= form_with model: @answer, url: study_question_answers_path(@study, @question), local: true do |form| %>
<%= form.hidden_field :participant_id %>
<% @question.answers.each do |answer| %>
<% if answer.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(answer.errors.count, "error") %> prohibited
this answer from being saved:
</h2>
<ul>
<% answer.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<% end %>
<%= form.text_area :text, class: 'textfield', id: 'textarea'%><br>
<div id="textarea_feedback"></div>
<div class="submit-btn"><%= form.submit%></div>
<% end %>
</div>
</div>
Вот изображение, показывающее, чего я пытаюсь достичь: