Rails form_for 呈现部分 form_for 以列出值而不提交给数据库,但现在有 2 个提交

Rails form_for renders partial form_for to list values without submitting to DB, but now 2 submits

我有一个简单的显示 - form_for 一个应用程序使用 form_for 呈现另一个部分以显示教育资格。部分是多态的。所以,现在我有 2 个提交,主要提交根本没有响应和部分工作....为什么?请注意,代码适用于一条记录,但需要按部分表单提交。请帮忙。

<%= bootstrap_form_for @application do |f| %>
    <div class="panel panel-default">
      <div class="panel-heading"> Education: </div>
      <div class="panel-body">
        <%= render partial: "degrees/form", :locals => { :degreeable => @application, :f => f }  %> <br>
        <%= f.link_to (fa_icon 'plus').to_s + " Add Another Qualification ", render(:partial => 'degrees/form', :locals => { :degreeable => @job, :f => f }), class: "btn btn-primary" %>
      </div>
    </div>
  <% end %>

部分form_for是:(注意:我什至取出提交并在主窗体上使用link_to,如上所示,但仍然没有效果。

<%= form_for [degreeable, Degree.new], :url => { :action => "index" } do |f| %>
  <div class = "form-group" }>
    <%= f.select :level, options_for_select(Application::EDUCATION, params[:level]), include_blank: "Select Degree", class: 'span-2' %>
    <%= f.text_field :description, :class => 'span5' %>
  </div>
 f.submit "Add Another Degree", class: 'btn btn-primary'
<% end %>

所需的行为必须是:

  1. 部分显示以显示带有 Bachelor/Master/Ph.D 和 接受资格名称的另一个文本字段。
  2. a button/link - 'Add more qualifications' 列出资格而不提交给 DB。
  3. 只有主表单按钮才能最终将申请表提交到数据库中。

我对有经验的开发人员的问题:

1.Can AJAX 在主窗体的部分帮助列表中。如果是,请提供帮助。我在 SO 上找到的所有 AJAX 代码和 google 在数据库中提交,而不是简单地列出。

2.Instead 使用主窗体中的按钮重新加载部分可以提交部分帮助简单地列出下值吗?

好的,我终于解决了这个问题,这对以后的访问者会有帮助。通过进行 2 处更改,这两个想法都归功于 Whosebug 开发人员,用于解决 2 个不同的问题:-

  1. Form_for inputs and submit button in different partials-@Anand
  2. Rails passing form_for object to partial - @D.Patrick

谢谢你们。所以,最后我的带有渲染调用的主窗体现在看起来是:

   <%= bootstrap_form_for @application do |f| %>
      *Many other application fields but irrelevant here.*
      <div class="panel panel-default">
        <div class="panel-heading"> Education: </div>
        <div class="panel-body">
          <% @form = f %>
          <%= render partial: "degrees/form", :locals => { :degreeable => @application, :f => @form }  %> <br>
          <%= f.link_to (fa_icon 'plus').to_s + " Add Another Qualification ", render(:partial => 'degrees/form', :locals => { :degreeable => @application, :f => f }), class: "btn btn-primary" %>
        </div>
      </div>
    <%= f.submit class: "btn btn-primary btn-outline btn-sm" %>
  <% end %>

并呈现部分形式:

    <%= f.fields_for [degreeable, Degree.new], :url => { :action => "index" } do |ff| %>
  <div class = "form-group" }>
    <%= ff.select :level, options_for_select(JApplication::EDUCATION, params[:level]), include_blank: "Select Degree", class: 'span-2' %>
    <%= ff.text_field :description, :class => 'span5' %>
  </div>
   <% ff.submit "Add Another Degree", class: 'btn btn-primary' %>
<% end %>

但我仍然坚持 JS/JQuery 单击按钮列出部分 fields.Have 发布了问题 now on Whosebug

UPDATE

: 我在 .

上发布了完整的答案