0

Rails の restful_authentication プラグインを使用して、ユーザーが自分のアカウント情報を変更できるようにしたいと考えています。

この 2 つのメソッドをユーザー コントローラーに追加しました。

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

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

      # Only update password when necessary
      params[:user].delete(:password) if params[:user][:password].blank?

      respond_to do |format|
        if @user.update_attributes(params[:user])
          flash[:notice] = 'User was successfully updated.'
          format.html { redirect_to(@user) }
          format.xml  { head :ok }
        else
          format.html { render :action => "edit" }
          format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
        end
      end
    end

また、new.html.erbedit.html.erbにコピーしました。リソースが routes.rb で既に定義されていることを考えると、簡単に動作することを期待していましたが、保存ボタンをクリックすると、 POST HTTP requestを使用して、updateではなくcreateメソッドが呼び出されます。その直後、セッションから自動的にログアウトします。

何か案は?

4

1 に答える 1

1

選択したユーザーがメソッドで見つからなかった可能性はありますeditか? その後@userは空で、フォームは新しいユーザーを作成していると考えています。

edit次のように、メソッドにデバッグ出力を追加してみてください。

def edit
  @user = User.find(params[:id])
  logger.debug "Found user = #{@user.inspect}"
end

ログメッセージがユーザーが見つかったかどうかを示しているかどうかを確認してください。

于 2010-05-22T08:14:37.673 に答える