从另一页获取信息重定向

时间:2014-02-20 13:20:40

标签: ruby-on-rails

因此,在用户注册后,我将其重定向到我的其他信息页面,我会收集更多信息。但是,我的设计/实现出了问题,因为rails说我缺少用户/创建模板

这是我的用户控制器

 class UsersController < ApplicationController

    def show
      @user = User.find(params[:id])
    end

    def new
      @user = User.new
    end


    def additional_info
      @user = User.new(user_addinfo)
      if @user.save
       redirect_to show_path
      end
    end


    def create
     @user = User.new(user_params)
     if @user.save
     # UserMailer.welcome_email(@user).deliver
      sign_in @user
      redirect_to  additional_info_path
      flash[:success] = "Welcome to InYourShoes!"
      #return @user  
     else
       render'new'
     end
  end  

    private

      def user_params 
        params.require(:user).permit(:name, :email, :password, :password_confirmation)
      end


      def user_addinfo
        params.permit(:year)
      end
  end

def show是我想在重定向到additional_info页面后显示的用户个人资料页面

def additional_info只是从私有方法def user_addinfo

中获取其他信息

def create是注册过程。

输入基本用户信息后,它会被重定向到其他,这很好。但是在额外的之后,它说我错过了用户/创建模板,但我的代码我试图重定向到show_path#usersshow,仍然无法正常工作

有什么建议吗?对不起,如果这看起来很直观,但我是铁杆新手。

1 个答案:

答案 0 :(得分:0)

我认为你的问题出在additional_info方法中,正如我在评论中所说的那样。你在做什么:

  • 创建用户
  • 为用户创建会话(sign_in @user) - 在会话中存储user_id
  • 重定向到您的additional_info页面 这就是问题所在。由于用户已经登录,因此您无需创建具有其他参数的新用户。您应该有一些帮助来检索当前登录的用户(如current_user),在additional_info方法中,只需更新它。

所以你的additional_info方法会变成:

def additional_info
  user = User.find session[:user_id]
  user.update params[:user]
  redirect_to user_path #show action
end