Ruby on rails(双重渲染),(暂停执行60秒),(然后保存到数据库)

时间:2019-03-09 07:00:53

标签: ruby-on-rails ruby sleep

我正在尝试执行以下操作:

  • 让用户输入姓名,电话号码和电子邮件。

  • 提交表单时,他将被重定向到等待页面

  • 系统将收到响应并等待(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)

我有2个问题:

  • 'wait'不会立即呈现,即使它是(create)方法中的第一行,它也会休眠60秒。
  • 我不知道在将数据保存到数据库后如何通知用户,因为我无法在方法内部进行双重渲染

我昨天才刚开始学习RoR,但是我今天必须完成这项艰巨的任务,请帮忙。

1 个答案:

答案 0 :(得分:0)

您不能在不涉及实时的情况下在一个请求中执行此操作,但是您可以在两个请求中进行操作,一个是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