Rails form_for отображает частичный form_for для перечисления значений без отправки в БД, но теперь 2 отправки

У меня есть простое отображение — приложение 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: (Примечание: я даже убрал submit и использовал 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. кнопка/ссылка - «Добавить больше квалификаций», чтобы перечислить квалификации без отправки в БД.
  3. Только основная кнопка формы должна окончательно отправить форму для приложения в БД.

Мои вопросы к опытным разработчикам:

1. Можно ли использовать AJAX в частичном списке справки на главной форме. если да, то как, пожалуйста, помогите. Весь код AJAX, который я нахожу в SO, и Google отправляет в БД, а не просто перечисляет.

2.Вместо частичной перезагрузки с помощью кнопки из главной формы можно ли отправить частичную справку, просто перечислив значения?


person Means    schedule 24.02.2017    source источник


Ответы (1)


Итак, я, наконец, решил это, и это будет полезно для будущих посетителей. При внесении 2 изменений обе идеи зачисляются разработчикам Stackoverflow на 2 разных вопроса: -

  1. Form_for inputs и кнопка отправки в разных частях - @ Ананд
  2. Rails передает объект form_for частичному - @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 нажатия кнопки, чтобы перечислить частичные поля. Опубликовал вопрос теперь в StackOverflow.

ОБНОВИТЬ

: я разместил полный ответ на этом ">ссылка.

person Means    schedule 24.02.2017