Я использую jquery 3.4 для отправки форм, которые обычно не являются удаленными, изменяя URL-адрес на лету и устанавливая data-remote в true. Перед обновлением до jquery 3.4 форма была отправлена без проблем.
Из различных исследований кажется, что я должен установить тип содержимого text / javascript или application / javascript, но добавив
$('#formid').attr('data-type','text/javascript')
не изменяет заголовки http. Перепробовал много разных синтаксисов без удачи.
Определение формы:
form_tag url_for(:action => :create) , :method => :post , :id => :emails_manage do
render :partial => "form"
end
Форма подачи:
select_tag :email_controller , @opt.html_safe , {:class => :select , :onchange => "$('#emails_manage').prop('action', '#{url_for(:action => :refresh_actions , :id => @email ? @email.id : 'dummy')}');$('#emails_manage').attr('data-remote','true');$('#emails_manage').submit();"}
Контроллер:
def refresh_actions
@controller = params[:email_controller]
@action = ''
@changedfieldslist = ''
end
файл refresh_actions.js.erb
$('#email_action').html("<%= escape_javascript(render(:partial => "actions")) %>");
$('#changedfieldslist').html("<%= escape_javascript(render(:partial => "changedfieldslist")) %>");
Редактировать: мне удалось заставить его работать, превращаясь в настоящий вызов ajax.
select_tag :email_controller , @opt.html_safe , {:class => :select , :onchange => "$('#ignorerecordischanged').val('true');$.ajax({url: '#{url_for(:action => :refresh_actions , :id => @email ? @email.id : 'dummy')}',data: $('#emails_manage').serialize()})"}