Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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应用程序通过单选按钮传递值_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails应用程序通过单选按钮传递值

Ruby on rails Rails应用程序通过单选按钮传递值,ruby-on-rails,Ruby On Rails,我正在尝试创建一个基本的测验应用程序来学习rails单选按钮 我有一个带有字段的测验模型-问题、选项1、选项2..选项4和答案 My index.html: <% @quizzes.each do |quiz| %> <h1><%= quiz.question %> </h1> <% question_count = question_count + 1 %> <%= radio_button_tag

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

我有一个带有字段的测验模型-问题、选项1、选项2..选项4和答案

My 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 %>





:post%>
我的问题很简单。我想检查测验控制器检查方法中单选按钮的值。我不知道该怎么做。 请帮忙


提前感谢

如果您希望验证用户在提交之前必须选择一个选项,您需要在测验模型中进行活动记录验证 (app/model/quick.rb)。请看一下关于这个问题的最新报告

更新

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

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

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

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

现在在你的测验控制器里

require 'pry'
class QuizzesController < ApplicationController

 def create
  binding.pry
 end

end
需要“撬动”
类QuizzesController

现在启动服务器
rails s
,然后浏览到测验的路线,选择答案并提交答案。一旦你这样做了,你的POST请求将命中create方法,你的程序将挂起pry。如果您查看一下bash,就会发现您可以直接与create方法交互。只需在bash中键入
params
,即可返回params(这是一个包含键值对的散列)。这是了解程序正在执行什么以及如何执行和传递信息的好方法。

User
params
关于控制器方法

params[:question\u count]
检查已检查收音机的值

更新

我假设
question\u count
是整数,因此每个收音机的名称变成
name=“5”
。这样,您可以使用
params[“5”]
访问其值


最好是用一些字符串设置名称,或附加一些字符串,如“验证”,您的意思是确保选中了单选按钮?否我不想验证复选框是否选中。我想确认答案是否正确controller@Cyzanfar问题更新否我不想验证复选框是否选中。我想确认控制员的答案你们怎么称呼一个问题的答案?类似于
@quizzes.each{124; quick | quick.question.answer}
?我只想将选中单选按钮的值传递给控制器方法“check”,我将用我的答案验证“check”方法中传递的值更新我的答案。问题是什么?