0

Я пытаюсь сделать приложение для проверки рельсов, и у меня проблема. Я использую драгоценный камень nested_forms, и я обычно могу создавать викторины. Вот код для создания викторины:Rails приложение для викторины, получающее результаты

_form.html.erb:

<%= nested_form_for @quiz do |f| %> 

    <%= f.text_field :name %> 

    <%= f.fields_for :questions do |question_form| %> 

     <h5>Question</h5> 

      <%= question_form.text_field :question %> 

      <%= question_form.text_field :option1 %> 

      <%= question_form.radio_button :trueoption, 1 %> 

      <%= question_form.text_field :option2 %> 

      <%= question_form.radio_button :trueoption, 2 %> 

      <%= question_form.text_field :option3 %> 

      <%= question_form.radio_button :trueoption, 3 %> 

      <%= question_form.link_to_remove "Remove" %> 
    <% end %> 


     <%= f.link_to_add "Add a question", :questions %> 

     <%= f.submit "I'm Done!", class: "button" %> 

<% end %> 

Это отлично работает, викторины создан и сохранен. Но тогда при попытке решить викторину проблемы возникают. Когда я иду на шоу зрения викторины (например, викторины/8) Я показываю тест нормально с этим:

  <%= nested_form_for @result do |f| %> 

        <% @quiz.questions.each do |question| %> 
         <%= f.fields_for question do |q| %> 
          <div class="panel"> 

           <h2><%= question.question %></h2> 
           <h5><%= q.radio_button :trueoption, 1, id: question.id %><%= label :trueoption_option1, question.id %></h5> 
           <h5><%= q.radio_button :trueoption, 2, id: question.id %><%= label :trueoption_option2, question.id %></h5> 
           <h5><%= q.radio_button :trueoption, 3, id: question.id %><%= label :trueoption_option3, question.id %></h5> 


          </div> 
         <% end %> 
        <% end %> 
      <%= f.submit %> 
     <% end %> 

И это показывает каждый вопрос, как правило, как и должно быть. Но что не работает, это радиокнопки; это все равно, что только один может быть проверен. В чем проблема?

Вот контроллеры:

quizzes_controller.rb:

class QuizzesController < ApplicationController 
def index 
    @quizzes = Quiz.all 
end 

def new 
    @quiz = Quiz.new 
    3.times do 
    question = @quiz.questions.build 
    end 
end 

def create 
    @quiz = Quiz.create(params[:quiz]) 
    if @quiz.save 
    redirect_to @quiz 
    else 
    render :action => :new 
    end 
end 

def show 
    @quiz = Quiz.find(params[:id]) 
    @result = Result.new 
end 
end 

Результаты контроллера:

class ResultsController < ApplicationController 
def new 
    @result = Result.new 
end 

def create 
    @result = Result.create(params[:result]) 

    if @result.save 
    redirect_to @result 
    else 
    render action: :new 
    end 
end 

def show 
    @result = Result.find(params[:id]) 
end 
end 

И модели:

Quiz.rb

class Quiz < ActiveRecord::Base 
    attr_accessible :name, :questions_attributes 

    has_many :questions 

    accepts_nested_attributes_for :questions, allow_destroy: true 
end 

Question.rb

class Question < ActiveRecord::Base 
    attr_accessible :option1, :option2, :option3, :trueoption, :quiz_id, :question 

    belongs_to :quiz 
    has_many :answers 
end 

Result.rb

class Result < ActiveRecord::Base 
    attr_accessible :question_id, :trueoption, :question_attributes 

    belongs_to :question 

    accepts_nested_attributes_for :question 
end 

Так в основном, то, что он делает это сохраняет только один результат, а не каждый по отдельности (вложенная форма), но она должна сохранить результат для каждого вопроса.

Заранее спасибо

ответ

0

В вашей модели вы определили Result belongs to Question поэтому один вопрос хранится только для результата.

Update ваше отношение:

result has_many question 
question belongs_to result 
Смежные вопросы