Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-帮助在RoR中为在线测验打分_Ruby On Rails_Forms_Textfield - Fatal编程技术网

Ruby on rails Rails-帮助在RoR中为在线测验打分

Ruby on rails Rails-帮助在RoR中为在线测验打分,ruby-on-rails,forms,textfield,Ruby On Rails,Forms,Textfield,我正在试着给我想做的测验申请打分。我有一个带有and ask(实际问题)的问题模型,4个选项(a-d)和一个正确答案(字符串) 在视图中,我显示了4个问题,然后是正确的答案选择(这只是一个功能测试),然后我创建了一个文本_字段来接受用户的答案选择,并创建了一个按钮来刷新索引操作,该操作现在具有评分逻辑 --我是否需要将文本字段放入表单标记中 <p>1. <%= h @question.q1 %></p> <p>2. <%= h @quest

我正在试着给我想做的测验申请打分。我有一个带有and ask(实际问题)的问题模型,4个选项(a-d)和一个正确答案(字符串)

在视图中,我显示了4个问题,然后是正确的答案选择(这只是一个功能测试),然后我创建了一个文本_字段来接受用户的答案选择,并创建了一个按钮来刷新索引操作,该操作现在具有评分逻辑

--我是否需要将文本字段放入表单标记中

<p>1. <%= h @question.q1  %></p>
<p>2. <%= h @question.q2  %></p>
<p>3. <%= h @question.q3  %></p>
<p>4. <%= h @question.q4  %></p>
<p>Answer: <%= h @question.correct  %></p>
<%= text_field_tag :choice, params[:choice] %> 
<%= button_to "Grade", {:controller => 'site', :action => "index"}  %> 
<p> <%= @answer %></p>
它真的不起作用。textfield应该选择字母选项,如“a”或“c”,并将其与数据库中的正确答案进行比较

我很想通过单选按钮来实现这一点,但我是rails的新手,所以我想我应该迈出一小步


因此,如果有人能帮助我通过字符串或单选按钮来解决这个问题,我将不胜感激。

目前,您的代码将忽略输入的文本。用户输入需要发布(通过表单和提交按钮)或获取(也可以通过表单完成)


在这种情况下,我建议您将其放在表单标签中,并添加一个提交按钮。向控制器添加必要的操作(
save
我相信在这种情况下是这样),验证数据,然后呈现索引操作。

我将这样做:

# in app/controller/QuestionsController
def index 
  @question = Question.find(1) 
  @grade = params[:choice] == @question.answer ? 'PASS' : 'FAIL'
end
它需要在
config/routes.rb
文件中指定路由:

map.questions 'questions', :controller => 'questions', :action => 'index'
然后,在
app/views/index.html.erb
中:

<h2><%=h @question.question_text %></h2>

<ol>
  <li><%=h @question.q1 %></li>
  <li><%=h @question.q2 %></li>
  <li><%=h @question.q3 %></li>
  <li><%=h @question.q4 %></li>
</ol>

<p>
  Correct answer <%=h @question.correct %>
</p>

<% form_tag do %>
  <p>Choice? <%= text_field_tag :choice %></p>
  <%= submit_tag 'Grade' %>
<% end %>

<p>Grade: <%= @grade %></p>

  • 正确答案

    选择

    等级:

    如果您提供routes.rb文件以及控制器代码的其余部分,我可以为您提供更具体的帮助。上述答案一点也不平静。如果这对您很重要,那么路由配置和控制器代码也会有所不同。此外,使用RESTful设计,您可以在视图中为方法调用使用
    form\u,这在当今更为标准

    <h2><%=h @question.question_text %></h2>
    
    <ol>
      <li><%=h @question.q1 %></li>
      <li><%=h @question.q2 %></li>
      <li><%=h @question.q3 %></li>
      <li><%=h @question.q4 %></li>
    </ol>
    
    <p>
      Correct answer <%=h @question.correct %>
    </p>
    
    <% form_tag do %>
      <p>Choice? <%= text_field_tag :choice %></p>
      <%= submit_tag 'Grade' %>
    <% end %>
    
    <p>Grade: <%= @grade %></p>