Rails:动态构建表单并保存响应

时间:2016-01-26 23:12:57

标签: ruby-on-rails

我正在开展一种调查式项目,我需要根据Question的{​​{1}}动态创建表单。我已经走得很远,但遇到了一些问题。 ChoiceQuestion的简单模型。 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让步失控。感谢您的任何意见!

0 个答案:

没有答案