我有这个方法:
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
if params[:mypmnode]
session[:return_to] = projects_pmnode_path(params[:mypmnode])
sign_in(@user)
end
format.html { redirect_to(session[:return_to], :notice => 'User was successfully updated.') }
format.xml { head :ok }
else
@create_company = true if params[:user][:company_id].blank? and params[:user][:company_attributes].length > 0
@create_department = true if params[:user][:department_id].blank? and params[:user][:department_attributes].length > 0
format.html { render :action => "edit" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
这个想法是,如果用户更新,他会自动登录并重定向到需要身份验证的页面。
在此页面中,我有: before_filter :authenticate_user!
这不适用于重定向。
如果我然后使用此 sign_in 功能转到另一个页面,则用户正确登录。
知道为什么重定向不起作用吗?谢谢!
更新:
为了更清楚,我插入第二页代码(控制器):
class PmnodesController < Projects::BaseController
before_filter authenticate_user!
def index
@pmnodes = Pmnode.all
respond_to do |format|
format.html
end
end