Rails 3 Concevoir manuellement changer le mot de passe

J'essaie de moyen de concevoir dans mon application rails. Mais je ne comprends pas comment puis-je donner à l'utilisateur la possibilité de changer son mot de passe. J'ai besoin d'un formulaire avec les champs "ancien mot de passe", "nouveau mot de passe" et "nouveau mot de passe de confirmation". Comment puis-je le faire?

Si j'utilise par défaut concevoir formulaire sur "/" profil " sur la page

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

De l'utilisateur.rb contiennent des

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

Mais il n'y avait
undefined method 'devise_error_messages!' for #<#<Class:0x59b9200> et ensuite (après avoir commenté devise_error_messages! ligne)
undefined method 'password' for #<Class:0x59b9200> erreurs.

J'essaie d'utiliser mon propre 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

et l'utilisation de conseiller à partir de cette question: Le rendu de la Concevoir modifier le Mot de passe du Formulaire

insérez ce code

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

en "/" profil " sur la page.

mots de passe/modifier.html.erb contient ce code

<h2>Change your password</h2>
<%# 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 %>

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

  <p><%= f.submit "Change my password" %></p>
<% end %>

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

Mais le rendu de formulaire a "/profil de" valeur pour l'attribut action et de l'envoi de ce formulaire ne rien faire.

  • Vous devez accepter l'une de ces réponses, si son droit.
InformationsquelleAutor Ardentum | 2011-07-07