2012-07-04 62 views
0

使用Rails 3创建第一,登录或注册后

在通常的应用程序,表单才会出现,如果用户登录后,可在控制器中,我们将在验证运行另一个检查,我们保存新的前记录。

但是,无论他是否登录,我都希望向所有人显示该表单。当访问者提交附件等表单时,它会检查用户是否已登录。如果他不是,那么将他重定向到登录/注册页面,当他完成时,只有这样才能保存新记录。

我知道这可以通过createsave来实现,但有人可以更详细地阐述如何在更清晰的解释中达到此目的吗?

回答

1
  • 用户提交表单
  • 控制器认为用户没有登录
  • 控制器仍然存在提交表单到数据库
  • 控制器设置的cookie与新对象的ID
  • 控制器重定向到登录
  • 用户登录
  • 控制器从数据库中检索持久表单信息
  • 控制器将对象分配给用户

运行定期作业来清理旧的未声明表单数据。

+0

坚持部分对我来说是新的。任何例子? – Victor

+0

persists =='save' –

0

嗯,在视图中,你会显示表单总是没有任何形式的登录检查。这里棘手的部分是保存用户在重定向到登录之前发送的数据。

一个解决办法是到后期数据保存在cookie中,然后将用户重定向到登录后在同一个页面,引发再次创造

在像你描述你会做完全控制:

class ThingController 
    def create 
    if user_logged_in? 
     if cookie[:stuff] 
     # create the stuff from cookie and remove it 
     else 
     # create the stuff 
     end 
    else 
     # redirect him to login with a callback to this same place   
    end 
    end 
end