6

基本上,我希望有两个单独的操作来更改密码和更改电子邮件,而不仅仅是一个。

我已经更新了我的路由以指向我的新控制器,该控制器继承自 Devise::RegistrationsController。

我的路线.rb:

devise_for :users, :controllers => { :registrations => "registrations" }

devise_scope :user do
  get "/users/password" => "registrations#change_password", :as => :change_password
end

我的registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController

  def change_password
  end

end

我的 app/views/devise/registrations/change_password.html.erb

<%=debug resource%>

这给了我零。

我在这里想念什么?

谢谢!

4

2 回答 2

10

在 Devise 的内置registrations_controller.rb中,有一个authenticate_scope!方法可以创建resource您要查找的对象。它由 a 执行prepend_before_filter,但仅适用于某些方法:

class Devise::RegistrationsController < DeviseController
  ...
  prepend_before_filter :authenticate_scope!, :only => [:edit, :update, :destroy]`

所以你只需要告诉你的自定义控制器在你的change_password方法上运行那个过滤器:

class RegistrationsController < Devise::RegistrationsController

  prepend_before_filter :authenticate_scope!, :only => [:change_password]

  def change_password
  end

end
于 2013-04-08T23:47:31.950 回答
-3
class RegistrationsController < Devise::RegistrationsController

  def change_password
    super
    @resource = resource
  end
end

app/views/devise/registrations/change_password.html.erb

<%=debug @resource%>
于 2012-08-01T09:16:49.663 回答