我正在尝试创建一个基本的测验应用来学习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控制器的检查方法中检查单选按钮的值。我无法弄清楚如何做到这一点。 请帮忙。
提前致谢
答案 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"