我使用带有自定义控制器(用户控制器(的设备。与其登录并转到user/edit
,我更喜欢提供主页。为此,我需要编辑designsessioncreatecontroller方法。
我知道我可以按照设计提供的说明编辑设计自定义控制器:
# before_action :configure_sign_in_params, only: [:create]
# GET /resource/sign_in
# def new
# super
# end
# POST /resource/sign_in
# def create
# super
# end
# DELETE /resource/sign_out
# def destroy
# super
# end
# protected
# If you have extra params to permit, append them to the sanitizer.
# def configure_sign_in_params
# devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute])
# end
那么,按照这些说明,我如何简单地让create
方法做它目前正在做的事情,而不是redirect_to "/"
,而不是它现在正在做的?
请注意,这是它目前正在做的事情:
self.resource = resource_class.new(sign_in_params)
clean_up_passwords(resource)
yield resource if block_given?
respond_with(resource, serialize_options(resource))
还要注意的是,我可以直接从github上的design复制代码,然后编辑它,就像这样:
self.resource = resource_class.new(sign_in_params)
clean_up_passwords(resource)
yield resource if block_given?
redirect to: "/"
但我想使用super
方法来完成这项工作,因为这是设计说明中推荐的方法。
无需重新定义create
操作,因为Devise允许您使用after_sign_in_path_for
方法来执行此操作。
def after_sign_in_path_for(resource)
root_path
end