1

私はこの方法を持っています:

  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
4

3 に答える 3

3

@user でパスワードが更新された場合、devise はセッションを無効にします。update_attributes の後、最初に呼び出しを試すことができますsign_out

sign_out(@user)
sign_in(@user)
于 2012-06-06T00:44:28.890 に答える
0

あなたのプログラムがこのブログの中に入ると確信していますか

if params[:mypmnode]
      session[:return_to] = projects_pmnode_path(params[:mypmnode])
      sign_in(@user)
end

そうでない場合は、自動的にサインインする必要があります。

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])

    end
    sign_in(@user)

    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
于 2012-06-04T15:29:37.467 に答える