背景从子类中调用方法会导致“无超类方法`sign_up_params'for ...”。为什么?
我有子类Devise::RegistrationsController
来处理用户注册自己与一个名为DeviseUsersController
类。
我需要覆盖create
行动 - 我以前使用super
然后执行额外的事情需要完成,但是,这不再满足我的要求。
所以我检查了devise code on github并试图通过一些调整重新创建它。但是,我不得不开始于第一线的问题...
守则
class DeviseUsersController < Devise::RegistrationsController
...
def build_resource
super
end
def sign_up_params
super
end
def create
build_resource(sign_up_params)
...
end
end
的错误
super: no superclass method `sign_up_params' for #<DeviseUsersController:0x007f8f2d09a538>
问题
为什么发生此错误?基于Devise::RegistrationsController code,显而易见的是,这种非私有的方法存在。
版本:
- 滑轨3.2.13
- 红宝石1.9.3
- 设计2.2.3
EDIT 代码更改为:
class DeviseUsersController < Devise::RegistrationsController
...
def create
build_resource(sign_up_params)
...
end
protected
def build_resource
super
end
def sign_up_params
super
end
end
仍然不起作用。
不幸的是,这并没有解决问题。请参阅编辑的文章 – user2460234
@ user2460234,当你说“没有解决问题”,你会给出具体的错误,我没有办法知道一般“没有工作” –
我很抱歉,因为我只编辑我的代码部分问题我认为很明显,错误是完全一样的。 – user2460234