我正在尝试创建一个基本的调查应用程序。在我的“采取调查”页面上,我循环遍历并将每个答案选项作为单选按钮或复选框显示为form_for,以创建用户的选择。对于单一选择(或单选按钮)的问题,这些选择非常有用,但它们没有为多个选择问题而保存。我很确定这与我的复选框的表单有关。
看来我应该这么做
<%= f.check_box :answer_id, answer.id %> <%= answer.title %> <br>类似于我创建单选按钮的方式,但这会引发一个错误
undefined method `merge' for 14:Fixnum下面是显示我的代码:
<h3>Questions:</h3>
<ul><% @survey.questions.each do |question| %>
<li><p><%= question.title %></p></li>
<% choice = question.choices.build %>
<% if question.single_response == true %>
<%= form_for [question, choice] do |f| %>
<% question.answers.each do |answer| %>
<%= f.radio_button :answer_id, answer.id %> <%= answer.title %><br>
<% end %>
<%= f.hidden_field :survey_id, value: @survey.id %>
<%= f.submit %>
<% end %>
<br />
<% else %>
<%= form_for [question, choice] do |f| %>
<% question.answers.each do |answer| %>
<%= f.check_box :answer_id %> <%= answer.title %> <br>
<%= f.hidden_field :survey_id, value: @survey.id %>
<% end %>
<%= f.submit %>
<% end %>
<br />
<% end %>
<% end %>
</ul>知道我需要做什么才能让它将answer_id保存到选择中,这样它才能真正创建选择?
谢谢!
发布于 2014-02-26 03:22:58
对于复选框,实际上希望返回一个数组作为参数。这里有一些有趣的语法,因为我们实际上不想使用表单构建器方法。它应该如下所示(适应特定的模型名称和方法)
<%= check_box_tag 'choice[answer_ids][]', answer.id %>使用这种语法应该告诉Rails将所有选中的复选框值编译成一个数组。
这条铁路讨论了这个主题。
发布于 2018-04-18 21:26:01
这个问题已经有几年的历史了,但我认为应该有一个更好的答案。由于您使用的是form_for (一个模型支持的表单),那么您可能希望使用最初尝试使用的form_for check_box方法。在你的例子中,它看起来是这样的:
<%= f.check_box :choice, { :multiple => true }, answer.id, false %>
https://stackoverflow.com/questions/22029951
复制相似问题