我遇到了一个小问题,我只是手动配置了用户身份验证过程,并通过一对一的关系向用户添加了配置文件。所有这一切都运行正常,但我有这个奇怪的问题,登录和唱歌形式没有重定向到同一页面。登录页面重定向到用户个人资料/users/:user_id/profile
,而登录表单重定向到/users/:user_id
,两个链接都正常工作,因为我们的路由文件都支持它们。我希望两者都重定向到同一页/users/:user_id/profile
。
我的控制器
在用户控制器中创建操作
def create
@user = User.new(params[:user])
if @user.save
sign_in @user
flash[:success] = "Welcome to the app"
redirect_to user_profile_path(@user, @profile)
else
flash[:error_message]
render 'new'
end
end
此方法效果很好,并从注册表单重定向到/users/:user_id/profile
。
在会话控制器中创建操作
def create
user = User.find_by_email(params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_back_or_to user
else
flash.now[:error] = 'Invalid email / password combination'
render 'new'
end
会话创建方法可以使用并重定向到/users/:user_id
,但当行redirect_back_or_to user
更改为redirect_to user_profile_path(@user, @profile)
时,会抛出错误No route matches {:action=>"show", :controller=>"profiles", :user_id=>nil, :format=>nil}
。
感谢任何帮助,谢谢。