【发布时间】:2015-08-21 16:18:13
【问题描述】:
我有两个相关的模型“Test”和“Student”:
class Student< ActiveRecord::Base
has_many :tests
end
class Test< ActiveRecord::Base
belongs_to :Student
end
我要做的是为学生创建未知数量的测试,即从学生的 show.html.erb 中,用户可以创建多个测试。此外,一旦创建了一组测试,用户就可以像以前一样通过学生的 show.html.erb 再次添加任意数量的测试。
请注意,创建测试不是学生创建的一部分(就像在this railscast 中一样)。学生是单独创建的,然后可以通过 app/views/students/show.html.erb 上的按钮添加多个测试。
当单击添加测试的按钮时,我正在students_controller.rb 中调用自定义操作(下面的customAction1)。我能想到的是动态构建和附加,例如 10 个(开始)测试实例到学生的实例(在 students_controller.rb 的自定义操作中),呈现自定义视图(下面的 addtests.html.erb),然后允许用户在该视图中为这些测试实例输入各种输入字段,最后当单击创建按钮时,调用 student_controller.rb 中的另一个自定义操作(下面的 customAction2)来保存(仅非空的)测试实例。
这是正确的(阅读 Rails)方法吗?由于我是 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 视图。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4.2