Rails - удаленная загрузка изображений не работает ТОЛЬКО на мобильных устройствах - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть приложение 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 %>

1 Ответ

0 голосов
/ 18 апреля 2020

Хорошо, поэтому я чувствую себя глупо, что не попробую это раньше, как только я изолировал, что проблема была remote: true, но я опубликую свое решение на тот случай, если у кого-то возникнет эта конкретная проблема c в будущем.

Я использовал gem 'remotipart', '~> 1.2' согласно документации для драгоценных камней . Я обновился до remotipart 1.4.4 и форма отправила файл.

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