Обновить информацию пользователя с помощью плагина restful_authentication в Rails? - PullRequest
0 голосов
/ 22 мая 2010

Я хочу дать пользователям возможность изменять информацию своей учетной записи с помощью плагина restful_authentication в rails.

Я добавил эти два метода в свой контроллер пользователей:

  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.erb в edit.html.erb .Учитывая, что ресурсы уже определены в routs.rb, я ожидал, что он будет работать легко, но каким-то образом, когда я нажимаю кнопку сохранения, он вызывает метод create вместо update , используя POST HTTP-запрос .Сразу после этого он автоматически выходит из сеанса .

Есть идеи?

1 Ответ

1 голос
/ 22 мая 2010

Возможно ли, что выбранный пользователь не может быть найден в вашем методе edit? Тогда @user пусто, и ваша форма думает, что вы создаете нового пользователя.

Попробуйте добавить отладочный вывод в методе edit, например:

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

И проверьте, показывает ли ваш журнал сообщений, что пользователь найден или нет.

...