Rails单选按钮不能正常工作和相关问题

时间:2016-06-21 22:38:04

标签: ruby-on-rails

我创建了三个模型,“调查”,“问题”和“答案”。调查has_many问题has_many答案(他们都属于他们上面的模型)。

这是我想要显示问题并提交用户输入的表格:

<%= form_for(:quiz_responses, url: quiz_responses_path) do |f| %>

<%= f.hidden_field :name, value: @survey.name %>

<% @questions.each do |question| %>
<ul> 
<%= f.hidden_field :question, value: question.content %>
<%= f.label question.content %>

<% question.answers.each do |answer| %>

<%= f.hidden_field :answers, value: answer.content %>

<%= f.label answer.content %>
<%= f.radio_button(:user_answer, answer.content) %>

<% end %>

它有一些问题:

  1. 如果我创建了多个问题,例如2个问题,我将获得8个单选按钮,每个问题4个(预期结果)。但是,我只能从8个无线电盒中选择一个(而不是每个问题的4个无线电盒中的一个),并且只提交一个:user_answer值。我该如何解决这个问题?

  2. 这很可能与#1有关,但{I} <%= f.hidden_field :answers, value: answer.content %>只在我提交表单时生成一个值(最后一个答案值)。我希望它提交所有答案值(所以如果我有2个问题,我会得到一个包含8个答案值而不是1个的params哈希)。 <%= f.hidden_field :question, value: question.content %>

  3. 也会出现类似的问题

1 个答案:

答案 0 :(得分:0)

你的1.是因为所有8个单选按钮的名称都是user_answer。您需要确保每个组都有不同的名称,例如包含问题ID的内容。也许"user_answer[#{q.id}]"所以你得到后端的哈希值。

对于2.,我希望你的浏览器实际上发送了所有8个值(你可以查看你的Inspector的网络选项卡),但Rails只给你一个,因为它对待params。同样,您应确保每个隐藏字段都具有唯一名称(此时将问题ID和答案ID组合在一起)。