Rails:动态创建表单 - 如何接受问题的答案?

时间:2014-06-25 20:28:44

标签: ruby-on-rails forms dynamic ruby-on-rails-4 nested

我已经在互联网上看了几个小时看着我的屏幕并且希望你们可以帮助我,并且可以阻止我在圈子里思考:)我已经找到了http://railscasts.com/episodes/196-nested-model-form-part-1和{{3但仍然无法理解它...

上下文

我正在尝试开发一个CMS,用户可以在其中创建动态表单,包含他们自己的特定问题,问题帮助文本和可能的答案(如果是单选按钮/复选框)

我能够创建问题和表单并在查看器中显示问题,我的下一步是允许其他用户回答问题,但无法弄清楚如何做到这一点。

到目前为止我所拥有的:

表单模型:

has_many :custom_questions
has_many :custom_themes
has_many :form_submissions
has_many :answers
accepts_nested_attributes_for :answers

问题模型

 belongs_to :custom_form
belongs_to :custom_theme

has_many :possible_answers
accepts_nested_attributes_for :possible_answers

has_many :answers
accepts_nested_attributes_for :answers

答案模型

belongs_to :custom_questions
belongs_to :possible_answers
belongs_to :form_submissions

和我用来加载问题和输入字段的查看器:

<div class='content custom_forms clearfix'>

    <%= form_for @customForm do |f| %>
        <ul>
            <%= @customForm.custom_themes.order(:order).each do |theme| %>


                <div class='align_element'>
                    <section class='form_theme_title clearfix'><%=  raw theme.theme_title %></section>
                    <section class="form_theme_description clearfix"><%= raw theme.theme_description.linkify %></section>
                </div>
                <ul class='selfce-reviews-table clearfix'>
                    <%= render "reviews/tabHeader" %>
                    <li class='row clearfix'>
                        <ul>
                            <li class="clearfix">
                                <% theme.custom_questions.order(:order).each do |question| %>

                                    <li class='column selfc'>

                                    </li>

                                    <li class='column rev'>
                                        <div class='align_element'>

                                        <section class='form_question clearfix'>
                                            <%= raw question.question %>
                                        </section>
                                        <section class="form_description clearfix">
                                            <%= raw question.description.linkify %> 
                                        </section>

                                        <%= f.fields_for question.answers.build do |builder| %>
                                            <%= builder.hidden_field :custom_question_id, value: question.id %>
                                            <% if question.q_type == "textfield"    or question.q_type.nil? %>
                                                <%= builder.text_field :answer, class:'reviews-inputBox clearfix' %>
                                            <% elsif question.q_type == "textarea" %>
                                                <%= builder.text_area :answer, class:'reviews-inputTextarea clearfix tinymce' %>

                                                <%= tinymce %>
                                            <% elsif question.q_type == "checkbox" %>

                                            <%  elsif question.q_type == "radio-button" %>

                                            <% end      %>
                                        <% end %>
                                        </div>
                                    </li>
                                <% end %>
                            </li>
                        </ul>
                        <%= f.submit %>
                    </li>
            <% end %>

        </ul>
    <% end %>
</div>

我想要的是将每个答案存储在字段中的“答案”表中: - question_id,指的是问题的唯一ID - answer - 输入字段的值

正如您所看到的,我使用@customForm,这是管理员生成的表单。我假设我在这里以错误的方式使用它,因为我不想更新表单而只是更新答案...所以相反它应该像form_for:答案,但似乎不起作用..

所以我的第一个问题是: 我看到每个答案的方式都是独一无二的,因此应该被视为一种独特的形式,因此我的嵌套表格。但是,如果我现在使用我的代码,每个输入字段都具有相同的ID:“custom_form_answer_answer”。有没有办法我不必使用嵌套表单来加载每个问题的输入字段,例如通过给出每个答案一个基于question_id的唯一ID?

我无法对输入字段名称进行硬编码,因为只要用户创建新字段,它就会发生变化..

我的第二个问题 如果有办法做到这一点......那我怎么能保存答案..

如果您需要任何附加信息,请告诉我..请记住,我对铁杆很新...所以还在学习!

谢谢! = - )

0 个答案:

没有答案