Я пытаюсь сделать следующее:
пусть пользователь вводит имя, номер телефона и адрес электронной почты.
когда он отправит форму, он будет перенаправлен на страницу ожидания
система получит ответ и будет ждать (60 секунд), прежде чем сохранить и уведомить пользователя.
def create
render :wait
sleep(60)
@guest = Guest.create(params.require(:guest).permit(:name, :email, :phone))
if @guest.save
## Here i was planning to notify the user
end
мой просмотр каталога views\guests(_form.html.erb, index.html.erb, wait.html.erb)
Я только вчера начал изучать RoR в первый раз, но я должен закончить это сложное задание сегодня, помогите пожалуйста.
Мне дали это задание как задачу, которую нужно выполнить за 48 часов, вот требования к заданию: - разрешить пользователю ввести имя, номер телефона и адрес электронной почты. - когда он отправит форму, он будет перенаправлен на страницу ожидания - система получит ответ и будет ждать (60 секунд) перед сохранением и уведомлением пользователя. @спикерманн
Заметка, не любитель таких задач. Но я полагаю, получите ли вы работу или нет, это хорошее упражнение для обучения. По сути, поскольку вы хотите, чтобы запрос отображался немедленно, вам нужно запустить сон и создание пользователя в фоновом потоке. Либо заставьте внешний интерфейс запрашивать статус создания цикла через вторую конечную точку, либо (лучшее решение) используйте кабель действия/веб-сокеты.





Вы не можете сделать это в одном запросе без участия реального времени, но вы можете сделать это в двух запросах, один из которых - это render :wait, а затем на странице ожидания вы будете при загрузке страницы отправлять другой запрос на сервер, который новый запрос будет иметь ваш
sleep(60)
@guest = Guest.create(params.require(:guest).permit(:name, :email, :phone))
if @guest.save
## Here i was planning to notify the user
end
Почему вы хотите это сделать? Можно ли сохранить сразу, но позволить пользователю подождать? Что должно произойти, если пользователь закроет браузер между ними, вы все еще хотите сохранить запись через 60 секунд? Или вы хотите сохранить запись только в том случае, если пользователь все время ждал и все еще находится в сети?