我正在开展一种调查式项目,我需要根据Question
的{{1}}动态创建表单。我已经走得很远,但遇到了一些问题。 Choice
是Question
的简单模型。 has_many :choices
具有可由任何内容表示的多态内容类型,在这种情况下,如输入,复选框,单选按钮等。我希望调查页面列出与该问题相关的问题和选择。< / p>
所以我有这个:
/views/survey/index.html.erb
Choice
应用/视图/问题/ _question.html.erb
<h1>Survey</h1>
<%= form_for @response do |f| %>
<% @questions.each do |question| %>
<%= f.fields_for :questions do |builder| %>
<%= render question, f: builder %>
<% end %>
<% end %>
<%= f.submit 'Get Response' %>
<% end %>
选择部分的一个例子:
应用/视图/ choice_inputs / _choice_input.html.erb
<h3><%= question.title %></h3>
<% question.choices.each do |choice| %>
<%= f.fields_for "question-#{question.id}" do |builder| %>
<%= render choice, f: builder %>
<% end %>
<% end %>
这是解决这个问题的最好方法吗?问题,至少我认为,这是因为生成的html给我的表单名称如下:
<%= f.label choice_input.label %>
<%= f.text_field choice_input.label %>
我也不明白如何为此构建response[questions][question-2][tell us more]
对象。我应该遍历Response
中的params
并将ResponseController
分配给每个Answer
吗?另外,我如何才能在Question
?
我可以看到params
让步失控。感谢您的任何意见!