Tôi đang cố gắng cho phép người dùng đặt lại mật khẩu của mình bằng cách sử dụng tùy chọn phục hồi của Devise. Điều này dường như không làm việc cho tôi.Devise - Recoverable (Đặt lại mật khẩu)
Tôi mở rộng Devise::PasswordsController
để không sử dụng bố cục ứng dụng.
class PasswordsController < Devise::PasswordsController
layout false
end
Trong các tuyến đường, tôi đảm bảo rằng bộ điều khiển mật khẩu của tôi được sử dụng.
devise_for :users, :controllers => {:passwords => "passwords"}
resources :passwords
Đây là mẫu người dùng của tôi để bạn thấy rằng tôi có tùy chọn :recoverable
.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
Trên trang đăng nhập của tôi, tôi đã (Tôi đang sử dụng Haml):
...
= link_to "Forgot your password?", new_password_path(resource_name)
Liên kết này một cách chính xác đưa tôi đến http://localhost:3000/users/password/new
.Here là hình thức được tìm thấy ở đó:
%h2 Forgot your password?
= form_for(resource, as: resource_name, url: password_path(resource_name), html: { :method => :post }) do |f|
= devise_error_messages!
%div
= f.label :email
%br/
= f.email_field :email
%div= f.submit "Send me reset password instructions"
Tuy nhiên, điều này dường như cố gắng đưa tôi đến địa điểm sai khi tôi nhấp vào nút. Nó không thành công mỗi lần và không hiển thị bất kỳ email nào trong nhật ký máy chủ.
Nó chuyển hướng tôi đến: http://localhost:3000/passwords/user
và nói với tôi:
Routing Lỗi
No route matches "/passwords/user"
Bất kỳ ý tưởng làm thế nào tôi có thể tiến hành? Tôi nghĩ sử dụng tùy chọn có thể khôi phục được có nghĩa là dễ hơn thế này. Tôi đang làm gì sai?
CẬP NHẬT Để ghi lại, tôi đã xóa mọi thứ tôi đã làm và thử sử dụng bộ điều khiển tiêu chuẩn, và tôi sửa đổi bố cục ứng dụng để không gây ra lỗi và mọi thứ đang hoạt động. Vì vậy, tôi chỉ cần một cách hay để xóa bố cục ứng dụng khỏi trang đặt lại mật khẩu.
Vấn đề vẫn còn. Nó sẽ không cho phép tôi truy cập vào trang đặt lại mật khẩu mà không có nó. Nó sẽ phàn nàn rằng không có một lộ trình cho người dùng/mật khẩu/mới. Ban đầu tôi cũng nghĩ như vậy, tôi đã tìm thấy thông tin ở đây: https: // github.com/plataformatec/devise/wiki/Cách thực hiện: -Cho phép người dùng-để-chỉnh sửa-mật khẩu của họ – ardavis
Tôi nghĩ rằng vấn đề chính là thực tế là tôi đang cố gắng mở rộng Devise :: PasswordsController. Tôi ước tôi không phải làm điều này, điều duy nhất tôi muốn là dành cho trang đặt lại mật khẩu để không sử dụng bố cục ứng dụng của tôi. – ardavis
Để ghi lại, tôi đã xóa mọi thứ tôi đã làm và thử sử dụng bộ điều khiển tiêu chuẩn, và tôi đã sửa đổi bố cục ứng dụng của mình để nó không gây ra lỗi và mọi thứ đang hoạt động. Vì vậy, tôi chỉ cần một cách hay để xóa bố cục ứng dụng khỏi trang đặt lại mật khẩu. – ardavis