我创建了三个模型,“调查”,“问题”和“答案”。调查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 %>
它有一些问题:
如果我创建了多个问题,例如2个问题,我将获得8个单选按钮,每个问题4个(预期结果)。但是,我只能从8个无线电盒中选择一个(而不是每个问题的4个无线电盒中的一个),并且只提交一个:user_answer
值。我该如何解决这个问题?
这很可能与#1有关,但{I} <%= f.hidden_field :answers, value: answer.content %>
只在我提交表单时生成一个值(最后一个答案值)。我希望它提交所有答案值(所以如果我有2个问题,我会得到一个包含8个答案值而不是1个的params哈希)。 <%= f.hidden_field :question, value: question.content %>
答案 0 :(得分:0)
你的1.是因为所有8个单选按钮的名称都是user_answer
。您需要确保每个组都有不同的名称,例如包含问题ID的内容。也许"user_answer[#{q.id}]"
所以你得到后端的哈希值。
对于2.,我希望你的浏览器实际上发送了所有8个值(你可以查看你的Inspector的网络选项卡),但Rails只给你一个,因为它对待params。同样,您应确保每个隐藏字段都具有唯一名称(此时将问题ID和答案ID组合在一起)。