Tôi cố gắng sử dụng trong ứng dụng đường ray của mình. Nhưng tôi không hiểu làm thế nào tôi có thể cung cấp cho người dùng chức năng để thay đổi mật khẩu của mình. Tôi cần một biểu mẫu với các trường "mật khẩu cũ", "mật khẩu mới" và "xác nhận mật khẩu mới". Tôi làm nó như thế nào?Rails 3 Thiết lập thủ công thay đổi mật khẩu
Nếu tôi sử dụng hình thức devise mặc định trên "/ profile" trang
<%= render :template => 'devise/passwords/edit',
:locals => {
:resource => my_user_model_variable,
:resource_name => my_user_model_name } %>
Trong user.rb chứa dòng
attr_accessible :email, :password, :password_confirmation, :remember_me
Nhưng có undefined method 'devise_error_messages!' for #<#<Class:0x59b9200>
và sau đó (sau khi cho ý kiến devise_error_messages! Line) undefined method 'password' for #<Class:0x59b9200>
lỗi.
tôi cố gắng sử dụng PasswordsController của riêng tôi:
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
và sử dụng tư vấn từ câu hỏi này: Rendering the Devise edit Password Form
chèn mã này
<%= render :template => 'passwords/edit',
:locals => {
:resource => current_user,
:resource_name => User } %>
vào trang "/ profile".
mật khẩu/edit.html.erb chứa mã này
<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" %>
Nhưng render hình thức có "/ profile" giá trị cho thuộc tính hành động và submiting hình thức này không làm gì cả.
Bạn nên chấp nhận một trong các câu trả lời này nếu đúng. –