Rails测验应用程序通过单选按钮传递值

时间:2015-03-29 07:41:59

标签: ruby-on-rails

我正在尝试创建一个基本的测验应用来学习rails单选按钮。

我的测验模型包含fields-question,option1,option2..option4和answer。

我的index.html:

<% @quizzes.each do |quiz| %>
<h1><%= quiz.question %> </h1>
      <% question_count = question_count + 1 %>
        <%=  radio_button_tag question_count,  quiz.option1 %>       
           <%= quiz.option1 %></br>
        <%=  radio_button_tag question_count, quiz.option2 %>
            <%= quiz.option2 %></br>
        <%=  radio_button_tag question_count,  quiz.option3 %>
            <%= quiz.option3 %></br>
        <%=  radio_button_tag question_count,  quiz.option4 %>
            <%= quiz.option4 %></br>
<%= button_to 'Submit', check_quiz_path(quiz), :method => :post %>

<% end %>

我的问题非常简单。我想在我的Quiz控制器的检查方法中检查单选按钮的值。我无法弄清楚如何做到这一点。 请帮忙。

提前致谢

2 个答案:

答案 0 :(得分:0)

如果您要确认用户在提交之前必须选择一个选项,那么您需要在测验模型中使用Active Record验证 (应用程序/模型/ quiz.rb 的)。看一下该主题的Rails Guide

<强> 更新

将信息从视图传递到控制器的唯一方法是使用params。在QuizzesController中的创建操作(方法)中,您需要访问传递的参数并将其与您的答案值进行比较。

调试代码的一种好方法是在代码中的特定时刻删除。我使用pry这是一个Ruby gem,可以帮助您调试代码。

这是我要检查我的参数是否正确传递的方法:

首先安装gem gem install pry然后bundle install

现在在你的QuizzesController

require 'pry'
class QuizzesController < ApplicationController

 def create
  binding.pry
 end

end

现在启动您的服务器rails s,然后浏览到测验所在的任何路线,选择您的答案并提交答案。一旦你这样做,你的POST请求将命中create方法,你的程序将挂起撬。如果你去看看你的bash,你会发现你可以直接与你的创建方法进行交互。只需在你的bash中键入params,它就会返回你的params(这是一个带有键值对的哈希)。这是理解程序执行和传递信息的方式和方式的好方法。

答案 1 :(得分:0)

控制器方法上的用户params

params[:question_count]检查已检查无线电的值。

<强>更新

我假设question_count是整数,因此每个无线电的名称变为name="5"。这样您就可以使用params["5"]来访问其值。

如果您使用某个字符串设置名称或者附加字符串name="answer-5"

,这样会更好