我有以下输入集合,这是调查的一部分:
<%= simple_form_for @appropriateness_test_result,url: url do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object && f.object.errors[:base].present? %>
<% randomize_questions.each_with_index.map do |q,i| %>
<%= f.input "[#{i}][answer]",label: "#{i+1}. #{q[:question]}",collection: q[:answers].map.with_index { |a,i| [a,i.to_s] },as: :radio_buttons %>
<%= f.input "[#{i}][id]",as: :hidden,input_html: { value: q[:id] } %>
<% end %>
<%= f.button :submit,'Submit' %>
这应该给我一个散列的结果,如下所示:
# question_answer_params output
{"0"=>{"id"=>"21","answer"=>"Yes"},"1"=>{"id"=>"22","answer"=>"No"},"2"=>{"id"=>"23","3"=>{"id"=>"18","answer"=>"Some other answer"},"5"=>{"id"=>"20","answer"=>""}}
反而得到一个错误:
actionView::Template::Error(未定义方法 `[0][answer]' for #ApppropriatenessTestResult:0x00007f7f1de53b68 你的意思?答案):
这是正确的,因为 answer
是 AppropriatenessTestResult
的字段(json 类型)。
但是,我仍然想强制 simple_form 使 simple_form_for 的这个输出成为一个像 question_answer_params
这样的自定义散列。是否有可能?有什么想法吗?