0

我想围绕设计的编辑个人资料页面编写一个自定义方法。我希望它在加载编辑页面之前和提交之后运行。但是,我的代码似乎不起作用:

class RegistrationsController < Devise::RegistrationsController
  before_filter :check_tutor, only: :edit

  private
    def check_tutor
      if current_user.is_tutor
        current_user.build_tutor if current_user.tutor.nil?
      else
        current_user.tutor.destroy
      end
    end
 end

关于为什么会这样的任何想法?谢谢!

4

3 回答 3

1

尝试向此控制器添加编辑操作

def edit
  super
end

要在表单提交后执行过滤器,您必须添加

before_filter :check_tutor, only: [:edit, :update]

def update
  super
end
于 2013-08-01T11:47:58.360 回答
0

您可能还想考虑一个 around_filter http://guides.rubyonrails.org/action_controller_overview.html#after-filters-and-around-filters。我会展示一些示例代码,但我不确定您是否尝试在之前构建导师并在之后 [根据需要] 销毁它,或者这些操作是否应该在控制器操作的两侧运行。

于 2013-08-01T11:56:34.520 回答
0

为了设计接您的控制器,您需要更改路线

devise_for :users, controllers: {registrations: "registrations"}
于 2013-08-01T12:11:49.150 回答