0
我想建立一个用户注册页面,将跨越三个页面并创建两个记录,一个用户对象和票据对象:多页帐户创建
- 第一(指数)收集只是问题的一个总结字段。
- 第二个(signup_a)收集问题的详细描述,自动填充前一个摘要,将会出现在票证对象中的一些相关联的详细信息,以及将在用户对象中出现的名字/姓氏/电子邮件
- 第三个(signup_b)为用户对象添加更多细节,如地址,城市,州等,但没有更多细节被添加到票证对象,因此可以在此处将其关闭。
- 最后一页(signup_c)显示所有的用户/票务信息返回给客户端,并在确认按钮后保存。
目前,我有一个控制器(没有错误检查或简化的respond_to代码)的方法:
def index # Collects summary
@ticket = Ticket.new
end
def signup_a # Basic Ticket Info/User name and email
@ticket = Ticket.new(params[:ticket])
@user = User.new
end
def signup_b # Address and other misc. pref's
@ticket = Ticket.new(params[:ticket])
@user = User.new(params[:user])
end
def signup_C#Display final results
@ticket = Ticket.new(params[:ticket])
@user = User.new(params[:user])
end
def submit_ticket #Saves info
@ticket = Ticket.new(params[:ticket])
@ticket.save!
@user = User.new(params[:user])
@user.save!
end
问题是...我不希望保存的信息进入数据库在每一个步骤,只有最后一个,但每个页面的变量之前没有显式引用下一页中没有被传递。如何继续添加到票证和用户对象,以便信息一直保存到我最后一页保存的地方! ?另外,当我执行@ user.save!方法...我仍然可以调用实例中的单个属性或执行保存!根据信息是否存储,将对象转换为真/假值?
为signup_b和C不会,我需要做的是这样 会话[:票据] << PARAMS [:门票] 什么?看起来这只会覆盖上一步? – Kevin 2009-12-17 06:12:01
另外,我听说在会话中存储模型对象是不好的? – Kevin 2009-12-17 06:13:23
而不是在“b”和“c”步骤中覆盖session [:ticket],可以将这些页面中的各个元素添加到现有会话[:ticket]对象中,即“session [:ticket] [:field1] = params [:ticket] [field1]“等。 – Legion 2009-12-17 06:19:54