私はこの方法を持っています:
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 関数を使用して別のページに移動すると、ユーザーは正しくログインします。
リダイレクトが機能しない理由はありますか? どうも!
アップデート:
わかりやすくするために、2 番目のページ コード (コントローラー) を挿入します。
class PmnodesController < Projects::BaseController
before_filter authenticate_user!
def index
@pmnodes = Pmnode.all
respond_to do |format|
format.html
end
end