Rails form_for将部分form_for呈现为列出值而不提交给DB,但现在提交2

时间:2017-02-24 07:18:48

标签: forms ruby-on-rails-4 ruby-on-rails-5 renderpartial

我有一个简单的显示 - 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. 部分显示以显示具有学士/硕士/博士学位的投放箱 另一个文本字段接受资格名称。
  2. 按钮/链接 - &#39;添加更多资格&#39;列出资格而不提交给DB。
  3. 只有主表单按钮才能最终提交申请表格到DB。
  4. 我向有经验的开发人员提问:

    1.在主表单上的部分帮助列表中可以使用AJAX。如果是的话,请帮助。我在SO上找到的所有AJAX代码和Google都在数据库中提交,而不是简单地列出来。

    2.如果使用主窗体中的按钮再次重新加载部分,可以提交部分帮助以简单列出值?

1 个答案:

答案 0 :(得分:0)

好的,所以我终于解决了这个问题,这将对未来的访问者有所帮助。通过进行2次更改,这两个想法都被写入Stackoverflow开发人员的2个不同问题: -

  1. Form_for inputs and submit button in different partials - @Anand
  2. Rails passing form_for object to partial - @ D.Patrick
  3. 对你们俩来说。所以,最后我的渲染调用的主要形式现在看起来:

       <%= 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点击按钮列出部分字段。已发布问题now on StackOverflow

      

    更新

    : 我在link发布了完整的答案。