据我所知,我在rails 4上使用最新的设计gem,因此它不会自动创建可在Controllers文件夹中查看的注册控制器。
据我所知,你可以将自己的东西扩展到隐藏的那个。这就是我做这个时所做的事情,以便用户被重定向到某个地方:
registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
edit_profile_path(current_user.id)
end
end
这很有效。
然后我决定改变他们销毁帐户时发生的事情。所以我将一些代码复制到我的控制器中并略微编辑:(从https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb复制)
def destroy
resource.destroy
Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
set_flash_message :notice, :destroyed if is_flashing_format?
yield resource if block_given?
respond_with_navigational(resource){ redirect_to after_sign_out_path_for(resource_name), notice: "THIS EDIT IS WORKING" }
end
然而,这没有用。我所做的就是添加通知:在重定向结束时,但是当我登录并“点击取消我的帐户”时,它给了我这个错误:
奇怪吧?这就是错误的整个文本。 我做错了什么?或者更重要的是如何添加在销毁注册功能期间执行的代码?未知操作无法找到操作'destroy' RegistrationsController
更新:
进一步的故障排除显示,将代码简化为此会返回相同的结果:
class RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
edit_profile_path(current_user.id)
end
def destroy
redirect_to root_path, notice: "Sadly, this isn't working."
end
end
答案 0 :(得分:0)
好的,这解决了它,但我不确定它是最安全的选项,如果有更好的方法,请在评论中告诉我。
我所要做的就是将def def从受保护的地方移出。 (我不知道实际上这意味着什么,但它确实有效)。
class RegistrationsController < Devise::RegistrationsController
def destroy
resource.destroy
Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
set_flash_message :notice, :destroyed if is_flashing_format?
yield resource if block_given?
respond_with_navigational(resource){ redirect_to "http://google.com" }
end
protected
def after_sign_up_path_for(resource)
edit_profile_path(current_user.id)
end
end