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.
Vous devez vous connecter pour publier un commentaire.
Votre formulaire doit être i.e. mot de passe/modifier.html.erb
VUE:
Contrôleur:
Routes:
Il fonctionne pour moi;
Ce qui se passe si vous ajoutez des guillemets autour de l'Utilisateur, en tant que tel: