这是我的第一篇文章。
首先,我向我糟糕的英语道歉。实际上,我不确定我是否能说出我的想法,因为英语不是我的第一语言。
无论如何,我正在使用 Rails 3 制作在线测试程序,基于 Railscasts 196-197 嵌套形式。
虽然这些剧集已经过时了,但我可以通过 stackoverflow 和 google 来帮助它。
问题是学生考试形式和自动评分系统。
DB表是这样构造的。
survey | question 1 | answer 1 | answer 2
-- answer 3
-- ...
-- question 2 -- answer 1
-- ...
-- ...
这个想法很简单。In answer model, there are two boolean columns, correct and user_answer. Teacher can check correct answer while making examination, and students can check user_answer while taking examination.
在视图survey/show.html.erb 中,我制作了另一种考试表格。学生填写复选框并按下提交按钮后,将按照调查控制器中的评分方法进行自动评分。最后他们可以看到测试的结果。
这是survey/show.html.erb 它运行良好。(我可以看到我想要的复选框和标签)
<h1><%= @survey.name %></h1>
<%= form_tag({:controller => "surveys", :action => "grading"}) do %>
<ol class="questions">
<% @survey.questions.each do |question| %>
<li>
<%= question.content %>
<ol class="answers">
<% question.answers.each do |answer| %>
<li>
<%= check_box(answer.user_answer, answer) %>
<%= label("answer_".concat(answer.id.to_s).to_sym, answer.content) %>
</li>
<% end %>
</ol>
</li>
<% end %>
</ol>
<div><%= submit_tag("Submit", :class => "submit") %></div>
<% end %>
但我不确定 answer.user_answer 是否可以正确保存。因为我无法制作和查看结果页面。
我正在尝试使用 redirect_to 方法。为此,我在survey_controller 中编写了评分方法
def grading
#@survey = Survey.find(params[:id])
@survey = Survey.new
redirect_to results_url
end
并制作了survey/results.html.erb 文件(包含测试结果)。但不工作。
我将此行放在 config/routes.rb 上,但仍然无法正常工作。
match "surveys/grading" => "surveys#grading", :via => :post
请让我知道与此相关的任何想法。
谢谢,进阶。