使用 Rails 3。
在通常的应用程序中,只有当用户登录时才会出现一个表单。然后在控制器中,我们将在保存新记录之前运行另一个身份验证检查。
但是,无论他是否登录,我都想向所有人显示该表单。当访问者提交带有附件等的表单时,它将检查用户是否已登录。如果他没有登录,则将他重定向到登录/signup 页面,当他完成之后,新记录才会被保存。
我知道这可以通过create
and来实现save
,但是有人可以更详细地说明如何以更清晰的解释来实现这一点吗?
使用 Rails 3。
在通常的应用程序中,只有当用户登录时才会出现一个表单。然后在控制器中,我们将在保存新记录之前运行另一个身份验证检查。
但是,无论他是否登录,我都想向所有人显示该表单。当访问者提交带有附件等的表单时,它将检查用户是否已登录。如果他没有登录,则将他重定向到登录/signup 页面,当他完成之后,新记录才会被保存。
我知道这可以通过create
and来实现save
,但是有人可以更详细地说明如何以更清晰的解释来实现这一点吗?
运行定期作业以清理旧的无人认领的表单数据。
好吧,在视图中,您将始终显示表单而无需任何登录检查。这里棘手的部分是保存用户在重定向到登录之前发送的数据。
一种解决方案是将发布数据保存在 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