我希望用户能够在表单上填写多项选择题。表单由多个调查组成,每个调查都有多个问题(每个问题都是多项选择)
我似乎无法存储多个调查位。我想要一个answer_ids然后我可以保存在用户has_many Answers通过:: user_answer关系。但我很挣扎。
我收到以下错误:
param`answer_ids'
的预期数组(得到字符串)
这是我的表格:
<%= simple_form_for [current_user], :url => competition_enter_path, :method => :POST do |u| %>
<% @surveys.each do |survey| %>
<%= u.simple_fields_for [survey] do |f| %>
<div class="contnt1">
<%= survey.name %>
<br />
<% survey.questions.each do |qq| %>
<%= f.simple_fields_for qq do |q| %>
<h3><%= qq.question %></h3>
<%= q.association :answers,
label: false,
collection: qq.answers,
as: :"#{qq.question_type.code}",
:label_method => :answer,
required: true
%>
<% end %>
<% end %>
</div>
<% end %>
<% end %>
<div class="actions">
<%= u.submit %>
</div>
<% end %>
答案 0 :(得分:0)
我遇到了几乎相同的问题。我通过替换来解决这个问题:
collection: qq.answers,
使用:
collection: qq.answers.map{|v| [v.property_for_answer_text, v]}
据我所知,问题是表单看到的值是字符串而不是Answer对象。因此它尝试发送String应该是Answer对象。