Rails 3 Devise меняет пароль вручную

Я пытаюсь использовать devise в моем приложении rails. Но я не понимаю, как я могу дать пользователю возможность изменить его пароль. Мне нужна форма с полями «старый пароль», «новый пароль» и «подтверждение нового пароля». Как я могу это сделать?

Если я использую форму по умолчанию на странице «/ profile»

<%= render :template => 'devise/passwords/edit', 
                        :locals => { 
                          :resource => my_user_model_variable, 
                          :resource_name => my_user_model_name } %>

In user .rb содержит строку

attr_accessible :email, :password, :password_confirmation, :remember_me

Но там была неопределенный метод devise_error_messages! для # , а затем (после комментирования строки devise_error_messages!) undefined 'password' метода для ошибок # .

Я пытаюсь использовать свой собственный PasswordsController:

class PasswordsController < ApplicationController
  before_filter :authenticate_user!

  def edit
    @user = current_user
  end

  def update
    @user = current_user
    raise params.inspect
    if @user.update_with_password(params[:user])
      sign_in(@user, :bypass => true)
      redirect_to root_path, :notice => "Password updated!"
    else
      render :edit
    end
  end
end

и использую совет из этого вопроса: Отображение формы ввода пароля для редактирования Devise

вставьте этот код

<%= render :template => 'passwords/edit', 
                    :locals => { 
                      :resource => current_user, 
                      :resource_name => User } %>

на страницу «/ profile».

passwords / edit.html.erb содержат этот код

Change your password

<%# raise resource.inspect %> <%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %> <%# devise_error_messages! %> <%= f.hidden_field :reset_password_token %>

<%= f.label :password, "New password" %>
<%= password_field_tag :name => "user[password]"%>

<%= password_field_tag :name => "user[password_confirmation]"%>

<%= f.submit "Change my password" %>

<% end %> <%= render :partial => "devise/shared/links" %>

Но визуализированная форма имеет значение «/ profile» для атрибута действия, и отправка этой формы ничего не делает .

5
задан Community 23 May 2017 в 10:34
поделиться