Добавление полей формы флажка через Ajax ответ на форму Rails, не отображается в параметрах при отправке - PullRequest
1 голос
/ 09 января 2020

Первый вопрос, заданный здесь, поэтому надеюсь, что я проясню проблему достаточно.

Итак, у меня есть эта длинная форма рельсов, и я пытаюсь сократить время загрузки и хочу асинхронно добавить некоторые флажки в мою форму из AJAX ответ. Я получаю флажки для отображения соответствующим образом, но значения не поступают в контроллер при отправке формы. Я пробовал несколько разных вариантов, но безрезультатно, поэтому ищу некоторые рекомендации. Совершенно новый для Rails, так что это его часть.

Вот код:

function fetchCodes(){
  if (window.location.pathname.includes("/something")){
    $.ajax({
      url: '/codes',
      success: function(response){
        updateFields(response)
      },
      error: function (error) {
        console.log(error);
        throw new Error('ajax error: ' + $(JSON.stringify(error)));
      },
    });
  }
}
function updateFields(response){
  var select_option_core_business = $(".codes");
  var selected_options = response.data.selected_options

  console.log(selected_options)
  $.each(response.data.options, function(key, value) {
    select_option_core_business
        .append($('<div class="col-lg-12"><input type="checkbox" name="registration_form[core_business][]" value=' + value + '><label for="registration_form_core_business">' + value + '</label></div>'));
}

Так что через некоторое время флажки появляются на DOM так же, как если бы они были отрисованы с использованием моего Первоначальный метод:

<% codes.each do |segment| %>
    <div class="col-lg-12">
       <%= check_box_tag(
             'registration_form[core_business][]',
             segment,
             @registration_form.core_business.include?(segment),
             class: 'form-check-label'
           )%>
           <small><%= f.label :core_business, segment, class: 'form-check-label' %></small>
       </div>
 <% end %>

Но когда я отправляю форму, core_business не указывается в параметрах. Я думаю, что форма не распознает новые добавленные флажки, так как они были загружены асинхронно, но я не уверен. Кто-нибудь еще пытался это сделать? Я попытался добавить по-разному с тем же результатом, но только с использованием jQuery методов.

Вот как это выглядит в DOM:

<div class="col-lg-12">
  <input type="checkbox" name="registration_form[core_business][]" value="Some Value" class="form-check-label" id="nil">
  <small class="pl-1">
   <label for="registration_form_core_business" class="form-check- 
    label">Some Value</label>
  </small>
</div>

Что соответствует тому, как рельсы образуют хелпер выводит html

Надеясь, что кто-то сталкивался с этим раньше. Спасибо за ваше время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...