Ruby on rails 如何显示两种类型的用户帐户页面

Ruby on rails 如何显示两种类型的用户帐户页面,ruby-on-rails,Ruby On Rails,我有一个具有以下字段的用户模型:名字、姓氏、电子邮件 客户需要两页。第一页用于编辑姓名,第二页用于编辑电子邮件地址 我考虑的一个选项是,使用params来确定应该在用户/编辑中呈现哪些部分: <% if !params[:section] %> <%= render :partial => 'form_for_name' %> <% elsif params[:section] == 'email' %> <%= rende

我有一个具有以下字段的用户模型:名字、姓氏、电子邮件

客户需要两页。第一页用于编辑姓名,第二页用于编辑电子邮件地址

我考虑的一个选项是,使用params来确定应该在用户/编辑中呈现哪些部分:

  <% if !params[:section] %>
    <%= render :partial => 'form_for_name' %>
  <% elsif params[:section] == 'email' %>
    <%= render :partial => 'form_for_email' %>
  <% end %>
    respond_to do |format|
      if @user.update_attributes(params[:user])
        format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
      end
    end
这意味着,在电子邮件页面上,如果用户发送了无效电子邮件,错误将显示在第一页而不是电子邮件页面上

我希望看到实现这个场景的最佳方式是什么。或者我应该有2个从用户控制器继承的控制器(名称和电子邮件)?每个控制器都有各自的视图

有更好的解决方案吗?

为什么不将“section”参数也发送到更新调用?这样,当出现错误并转到“编辑”页面时,section参数将可用,并且将呈现正确的表单


在更新期间发送“section”的方法也应该非常简单。在你有表单的地方贴上一段,我将向你展示如何将当前的“部分”传递给更新操作。基本上,您只需在表单操作中拼写路径“user_path(@user,:section=>params[:section])。

嗨,aditya,您是指这个位吗?用户路径(@user),:html=>{:multipart=>true})do | f |%>是的,使用用户路径(@user,:section=>params[:section]),:html=>{:multipart=>true})do | f |%>谢谢你回复Aditya。因此,我认为,我这样做(即通过params)是一种很好的方法?当然,这很好。绝对不要进入多个控制器或对控制器进行子类化。如果您想让它更干净,请查看railscast on multi-step表单。