Первый вопрос, заданный здесь, поэтому надеюсь, что я проясню проблему достаточно.
Итак, у меня есть эта длинная форма рельсов, и я пытаюсь сократить время загрузки и хочу асинхронно добавить некоторые флажки в мою форму из 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
Надеясь, что кто-то сталкивался с этим раньше. Спасибо за ваше время!