Ruby on rails (двойной рендеринг), (приостановить выполнение на 60 секунд), (затем сохранить в базе данных) Вопрос - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь сделать следующее:

  • позволить пользователю ввести имя, номер телефона и адрес электронной почты.

  • , когда он отправляетформа, он будет перенаправлен на страницу ожидания

  • система получит ответ и будет ждать (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
    

мой каталог view view \ guest (_form.html.erb, index.html.erb, wait.html.erb)

У меня 2 проблемы:

  • 'wait' не рендерится сразу, он также спит 60 секунд, хотя это первая строка внутри метода (create).
  • Я не знаю, как уведомить пользователя после сохранения данныхв базу данных, так как я не могу выполнить двойной рендеринг внутри метода

Я только вчера начал изучать RoR, но мне нужно закончить эту сложную задачу сегодня, помогите, пожалуйста.

1 Ответ

0 голосов
/ 09 марта 2019

Вы не можете сделать это в одном запросе без участия в режиме реального времени, но вы можете сделать это в двух запросах, один - 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
...