У меня есть приложение Rails 4.2.8 (Ruby 2.5.1), использующее Carrierwave и Remotipart для загрузки изображений через Ajax (с remote: true
. Все отлично работает на рабочем столе или планшете, но когда я пытаюсь загрузить изображение с мобильного устройства (либо в производстве, либо с помощью ngrok для туннелирования моей локальной версии), удаленная форма фактически никогда не отправляется.
По сути, происходит то, что имя файла быстро исчезает из-за кнопки ввода «Выбрать файл» и вместо этого он говорит «файл не выбран», кнопка немедленно отключается (из-за атрибута data: disable_with:
) и остается таким же навсегда. И запрос Post
никогда не запускается и никогда не попадает на мой сервер.
До сих пор я тестировал только на устройстве IOS, и там он терпел неудачу. Я также тестировал мобильную компоновку из инструментов Dev в своем 10-разрядном компьютере на Macbook, и с этого все работает нормально. В противном случае на IOS device, это происходит как в Chrome, так и в Safari.
Тот факт, что запрос Post никогда не касается моего сервера, меня озадачивает. и эта проблема, связанная с тем, что Rails https://github.com/rails/rails/issues/17947 выдает ошибки при отправке пустой формы файла, но ошибки нет. Файл просто уходит. Когда я подключаю свой телефон к инструментам safari dev на своей ма c, поле файла заполняется значением файла, когда я выбираю его, но затем, как только я нажимаю "Отправить", поле очищается до ""
и все, что я вижу на вкладке сети, - это два пустых about:blank
ответа одного типа js, одного типа другого
Ниже приведена сама форма. В моих журналах нет запроса Post
, поэтому я не думаю, что это может быть что-либо из контроллера или из другого места. Наконец, я попытался использовать Chrome mobile inspect tool Chrome :: // inspect, и не было никаких ошибок javascript, которые были видны, насколько я мог видеть.
Если у кого-то есть идеи о том, где я могу go в следующем отладочном путешествии, я очень признателен за помощь.
<%= simple_form_for current_user.profile, url: profiles_photo_step_path, method: :post, remote: true do |f| %>
<div class="carrierwave-button-div">
<%= f.input :image, as: :file, label: false %>
</div>
<%= f.submit "Submit", class: "btn btn-default", data: {disable_with: "Submitting..."} %>
<div class="primary-center-text" style="margin-top: 15px; padding: 10px 5px 5px 5px;">
<a href="#sign-up-complete" class="skip-step-link blue-link" id="skip-photo-link">Skip for now</a>
</div>
<% end %>