【问题标题】:Rails form_for renders partial form_for to list values without submitting to DB, but now 2 submitsRails form_for 呈现部分 form_for 以列出值而不提交给 DB,但现在 2 提交
【发布时间】:2017-07-14 22:39:59
【问题描述】:

我有一个简单的显示 - 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. 一个按钮/链接 - “添加更多资格”以列出资格而不提交给 DB。
  3. 只有主表单按钮才能最终将表单提交到数据库中。

我对有经验的开发者的问题:

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

2.通过简单地列出值来提交部分帮助,而不是再次使用主窗体中的按钮重新加载部分?

【问题讨论】:

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


    【解决方案1】:

    好的,我终于解决了它,这对未来的访问者会有帮助。通过进行 2 次更改,这两个想法都归功于 Stackoverflow 开发人员针对 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。已发布问题now on StackOverflow

    更新

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多