我正在使用Devise进行学生身份验证,并且还有其他操作称为show_profile
和edit_profile
,以便学生可以查看和编辑他的个人资料。
问题是我制作的控制器写了Devise控制器,因此登录/注册停止工作。如何使我的控制器成为Devise控制器的扩展?
如果我放这两个:
class Students::RegistrationsController < Devise::RegistrationsController
class StudentsController < ApplicationController
并在登录class StudentsController < ApplicationController
时对此进行评论,并在登录后运行此class Students::RegistrationsController < Devise::RegistrationsController
。
class Students::RegistrationsController < Devise::RegistrationsController
#class StudentsController < ApplicationController
private
def secure_params
params.require(:student).permit(:name, :father_name, :grand_father_name)
end
public
before_action :authenticate_student!
def show_profile
@student = current_student
end
def edit_profile
@student = current_student
end
def update_profile
@student = current_student
if @student.update_attributes(secure_params)
redirect_to(:action => 'show_profile',:id => @student.id )
flash[:notice] = "student edited successfully"
else
render('edit_profile')
end
end
end
答案 0 :(得分:0)
您必须告诉Devise您正在routes.rb
中使用自定义设置
这样的事情,请调整您的需求。
devise_for :users,
controllers: {
registrations: 'student/registrations'
}
如果这就是您的模型,显然可以使用devise_for :students
。