我的表单在Chrome和Firefox中通过remote: true
完美无缺地提交。但是,在Safari(桌面和移动设备)上,表单根本没有提交。网络在处理状态中“冻结” - http://take.ms/IdPyw
它与this issue非常相似,但它与文件输入无关。
我的代码如下:
形式:
=form_with(model: Request.new, class: 'g-form g-contact__form', id: 'form', remote: true) do |f|
=f.file_field :attachments, class: 'g-input__field-file', multiple: true
=f.submit 'Отправить', class: 'g-btn g-btn_submit', id: 'form_submit', data: { "disable-with": "Отправляем..." }
我的controllers/requests_controller.rb
:
def create
allow_send = true
@request = Request.new(request_params)
if allow_send
respond_to do |format|
if @request.save
format.js
RequestMailer.notify_admin(@request).deliver_now
else
format.js { render partial: 'fail' }
end
end
else
@request.errors.add(:bot, "К сожалению, у нас подозрение, что вы бот. Попробуйте заполнить форму ещё раз.")
respond_to do |format|
format.js { render partial: 'fail' }
format.html
end
end
end
我的create.js.rb
:
$('#form-popup').toggle();
$('#success-popup').toggle();
如果我转向更经典的方法,意味着通过html响应并重定向到特定页面,该表单在Safari中有效。但是,我需要使用该表单,就像它现在在Chrome中一样。
我的计划B方法是重写所有代码,负责提交表单并检查普通JS中的错误(即$.ajax({type: "POST",
等...),但我真的想留下工具,铁轨提供。
Safari有解决方法吗?
更新
我能够检索错误消息。它声明:Failed to load resource: Network connection lost
(屏幕截图 - http://take.ms/yrAMI)