rails3如何重定向到新页面?

时间:2013-08-14 05:17:51

标签: ruby-on-rails ruby

这是我的第一篇文章。

首先,我为可怜的英语道歉。实际上,我不确定我能说出我的想法,因为英语不是我的第一语言。

无论如何,我正在使用基于Railscasts 196-197嵌套表单的Rails 3进行在线测试程序。

虽然这些剧集已经过时了,但我可以通过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.

在view 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

请让我知道与此相关的任何想法。

谢谢,先进。

1 个答案:

答案 0 :(得分:0)

用于重定向到结果路径

result

中将方法设为surveys cotroller
def results
end
在routes.rb中

resources :surveys do
 collection do
   get 'results'
 end
end

run rake routes

查看为结果生成的url,可能是results_surveys

def grading
    #@survey = Survey.find(params[:id])
    @survey = Survey.new

    ##changed as per the rake routes
    redirect_to results_surveys_path
end

希望这可以提供帮助