我正在尝试构建一个用户注册页面,该页面将跨越三个页面并创建两个记录,一个用户对象和一个故障单对象:
目前,我在单个控制器中使用这些方法(代码简化而无需错误检查或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
问题是......我不想在每一步都将信息保存到数据库中,只是最后一步,但是在下一页中没有明确引用之前每页的变量都不是通过。如何继续添加Ticket和User对象,以便信息一直保留到我保存的最后一页! ?另外,当我执行@ user.save时!方法...我仍然可以调用实例中的各个属性或执行保存!根据信息是否存储,将对象转换为真/假值?
答案 0 :(得分:0)
不是使用每个中间步骤保存到数据库,而是将发布的信息保存到会话中。
def signup_a
session[:ticket] = params[:ticket]
end
然后,当您到达最后,您可以从会话中检索该数据以传递给对象构造函数。
def submit_ticket #Saves info
@ticket = Ticket.new(session[:ticket])
@ticket.save!