所以我想在注册时为我的用户构建一个向导。 我不能使用javascript(我发现这种形式的一般解决方案。) 原因是我的向导中的每个页面都依赖于Javascript,这意味着一次加载所有页面需要很长时间。 哦,向导处理3种不同的资源。
我尝试了一种我目前坚持的方法,坦率地说感觉不对。
(SIDENOTE:用户曝光了“体面曝光”宝石)
这是我的向导控制器:
def index
case current_step
when 'description'
render 'users/edit'
when 'contact'
render 'contact_informations/edit'
when 'location'
render 'location/edit'
end
end
def current_step
@current_step || STEPS.first
end
def next_step
@current_step = STEPS[STEPS.index(current_step)+1]
index
end
def previous_step
@current_step = STEPS[STEPS.index(current_step)-1]
index
end
def final_step
@current_step == STEPS.last
end
然后我对每个资源都有一个更新操作(这是同一个向导 - 控制器)
def update_description
if user.update_attributes(params[:user])
next_step
else
redirect_to user_wizard_path(user)
end
end
def update_contact_information
# Do stuff here
end
def update_location
# Do stuff here
end
在同一控制器中调用操作似乎存在问题。 基于此我以前从未见过这样做,感觉不对。
我想简单地完成的事情: 我不想混淆最初的资源REST控制器。 我希望每一步都得到验证 如果update_attributes失败,请重新呈现包含错误的表单。 如果update_attributes成功渲染下一步。
我得出的结论是,我对此的镜头不起作用,并且感觉不像做事的“轨道”。 我看过Ryan Bates关于“多步形式”的转播,但即使在那之后,我似乎无法弄清楚这一点。
提前致谢。 添