У меня есть две родственные модели "Тест" и "Студент":
class Student< ActiveRecord::Base
has_many :tests
end
class Test< ActiveRecord::Base
belongs_to :Student
end
То, что я пытаюсь сделать, это создать неизвестное количество тестов для учащегося, т.е. из студенческого show.html.erb пользователь может создать несколько тестов. Кроме того, как только набор тестов создан, пользователь может снова добавить любое количество тестов через show.html.erb учащегося, как и раньше.
Обратите внимание, что создание тестов не является частью творчества учащихся (как в этом рельсовая трансляция). Студент создается отдельно, а затем можно добавить несколько тестов с помощью кнопки в app/views/students/show.html.erb.
Я вызываю пользовательское действие (customAction1 ниже) в файле student_controller.rb, когда нажимается кнопка для добавления тестов. Что я могу придумать, так это динамически создавать и добавлять, скажем, 10 (для начала) экземпляров тестов к экземпляру учащегося (в пользовательском действии student_controller.rb), отображать пользовательское представление (addtests.html.erb ниже), затем разрешить пользователю вводить различные поля ввода для этих тестовых экземпляров в этом представлении, и, наконец, когда нажата кнопка создания, вызвать другое пользовательское действие (customAction2 ниже) в student_controller.rb, чтобы сохранить (только непустые) тестовые экземпляры.
Это правильный (читай Rails) способ сделать это? И поскольку я новичок в рельсах, исправьте мой код, который выполняет вышеупомянутые вещи:
students_controller.rb
#called when button to add tests is clicked from students/show.html.erb view:
def customAction1
@student = Student.find(params[:student])
10.times {@student.tests.append}
render 'addtests'
end
addtests.html.erb
# Here I'm unable to show input fields for each of the 10 newly added tests
students_controller.rb
# Called when create button is clicked from addtests.html.erb after inputting fields for some tests
def customAction2
@student.tests.save # Is this correct?
render 'show' # render show.html.erb of this student
end
Если это действительно правильный подход, дайте мне знать, как написать представление addtests.html.erb.