У меня есть приложение Rails 6, в котором пользователи могут отправлять изменения в модель, а электронное письмо с подтверждением будет отправлено администраторам сайта. Изменения отправляются через модальное всплывающее окно, и после отправки всплывающее окно заменяется другим, подтверждающим, что электронное письмо было отправлено.
Проблема, с которой я сталкиваюсь, заключается в том, когда это делается на мобильном устройстве (я используя iPhone, не уверен, что это произойдет на Android), после отправки изменения появляется другое всплывающее окно, предлагающее мне загрузить файл размера 0 с именем обновляемой модели (это происходит как в Safari, так и в *) 1043 *). Этого не происходит в настольной версии сайта или в мобильном эмуляторе на рабочем столе, поэтому я не могу придумать, как я могу диагностировать эту проблему.
Вот код, который вызывается непосредственно перед Появляется всплывающее окно загрузки:
<%= button_tag "Submit", type: 'submit',
id: 'modal-subimt',
class: 'btn btn-primary',
onClick: 'replaceModal()' %>
Вот функция create
, вызываемая при отправке формы:
def create
... # Setting the parameters for the model being changed
if @model.save
@model.send_confirmation_email()
else
# Irrelevant because the email gets sent
end
end
Вот функция send_confirmation_email
, вызываемая в create
:
def send_confirmation_email()
UserMailer.model_confirmation(self).deliver_now
end
А вот функция model_confirmation
, вызываемая send_confirmation_email
:
def model_confirmation(model)
@model = model
recipient = <admin email>
mail to: recipient, subject: "Model Confirmation"
end
Нигде в этом коде я не могу увидеть, где мне может быть предложено загрузить файл , но увы это происходит. Приветствуется любая помощь в том, как правильно диагностировать или решить эту проблему. Спасибо!
EDIT: Я изменил свой код, чтобы модель обновлялась без отправки электронного письма с подтверждением. Кроме того, модальное окно больше не заменяется новым, подтверждающим, что электронное письмо было отправлено , и у меня все еще та же проблема. Это наводит меня на мысль, что проблема связана с созданием модели.
РЕДАКТИРОВАТЬ 2: Раньше я создавал модель и оставался на странице (с подтверждением того, что электронное письмо было послано). Я изменил свой контроллер на redirect_to request.referer
, чтобы перезагрузить страницу после внесения изменений, и когда это будет сделано, мне больше не будет предлагаться загрузить пустой файл. К сожалению, как я хочу, чтобы это работало, перезагрузка страницы не оптимальна. Есть ли причина, по которой мне будет предложено загрузить при обновлении модели без перезагрузки страницы?
РЕШЕНИЕ: Я смог решить эту проблему, добавив remote: true
в form_for
строка вроде следующей:
<%= form_for(Model.new, remote: true) do |f| %>
...
<%= button_tag "Submit", type: 'submit',
id: 'modal-subimt',
class: 'btn btn-primary',
onClick: 'replaceModal()' %>
<% end %>
Я не уверен, почему именно это решило мою проблему, так что если кто-нибудь может дать некоторое представление, это будет очень признательно!