如何添加其他功能来设计控制器

时间:2019-05-11 11:32:32

标签: ruby-on-rails devise

我正在使用Devise进行学生身份验证,并且还有其他操作称为show_profileedit_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

1 个答案:

答案 0 :(得分:0)

您必须告诉Devise您正在routes.rb中使用自定义设置 这样的事情,请调整您的需求。

devise_for :users,
  controllers: {
    registrations: 'student/registrations'
  }

如果这就是您的模型,显然可以使用devise_for :students