用于参数`answer_ids'的Simple_Form嵌套预期数组(获取字符串)

时间:2014-08-25 21:15:42

标签: ruby-on-rails ruby-on-rails-4 simple-form has-many-through ruby-on-rails-4.1

我希望用户能够在表单上填写多项选择题。表单由多个调查组成,每个调查都有多个问题(每个问题都是多项选择)

我似乎无法存储多个调查位。我想要一个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 %>

1 个答案:

答案 0 :(得分:0)

我遇到了几乎相同的问题。我通过替换来解决这个问题:

collection: qq.answers,

使用:

collection: qq.answers.map{|v| [v.property_for_answer_text, v]}

据我所知,问题是表单看到的值是字符串而不是Answer对象。因此它尝试发送String应该是Answer对象。