Rails深层嵌套表单link_to_add

时间:2014-08-22 19:14:26

标签: ruby-on-rails nested-forms

我有一个模型,您可以在其中添加许多问题(perguntas)到Oportunidade表单,然后您可以根据需要选择添加任意数量的选项(alternativas)作为单选按钮/复选框表单中的可能答案,这是表单视图:

_perguntas.html.erb

<div id="perguntas">
 <%= f.fields_for :perguntas do |m| %>
      <div class="field">
      <% tipo = m.object.tipo_pergunta.blank? ? 'Resposta aberta' : m.object.tipo_pergunta     %>
      <%= m.input :tipo_pergunta, as: :radio_buttons, label: "Tipo de Pergunta" %>
  </div>
  <div class="field plus-field">
    <%= m.input :pergunta , :label=> false , :placeholder => "Escreva uma pergunta" %>
  </div>
  <%= m.link_to_remove "-",:class => "link-add-field" %>
  <div class="field alternativa-field">
    <%= field_alternativa(m, entidade) %>
  </div>
  <% end %>
</div>
<div class="adiciona-botao-field ">
  <div class="field plus-field">
      <%= f.link_to_add "+", :perguntas, :class => "link-add-field", 'data-target' => '#perguntas' %>
  </div>
</div>

_alternativas.html.erb

   <div class="field alternativa-field">
    <div id="alternativas">
      <%= m.fields_for :alternativas do |a| %>
        <%= a.input :resposta, :placeholder => 'Alternativa', label: false %>
        <%= a.link_to_remove "-",:class => "link-add-field" %>
      <% end %>
    </div>
    <div class="adiciona-botao-field ">
      <div class="field plus-field">
          <%= m.link_to_add "+", :alternativas, :class => "link-add-field", 'data-target' => '#alternativas'%>
      </div>
    </div>
</div>

oportunidades_controller.rb

 def new
    @oportunidade = Oportunidade.new
    perguntas = @oportunidade.perguntas.build
    perguntas.alternativas.build

当我在遇到很多问题时尝试添加选项时会出现问题,通过在Pergunta的第二个实例中单击alternativa对象link_to_add,它会将Alternativa text_field添加到第一个Pergunta对象,从而无法将Alternativas添加到许多嵌套形式的特定Perguntas,有没有解决这个问题?

1 个答案:

答案 0 :(得分:3)

看起来不再支持nested_form gem了(作为另一个Ryan Bates宝石)。这是opened pull request with fix that solves your problem

作为替代方案,我建议您使用另一个宝石处理嵌套表单Cocoon