Rails资源 - 在提交编辑表单后调用方法

时间:2014-05-02 22:25:47

标签: ruby-on-rails ruby-on-rails-4

编辑表单完美无缺。我想在编辑个人资料后调用一个方法[通知我们已经编辑过]。这样做的正确方法是什么?

路线

还有很多路线但是......我不确定它们是否是必要的信息

  resources :profiles

...

控制器

  # GET /profiles/1/edit
  def edit
  end

  def call_this_after_edit_is_clicked
    ...
  end

1 个答案:

答案 0 :(得分:2)

有三种方法可以做到这一点(以及额外的第四种方式):

在行动结束时调用您的方法。这很简单,但它会使控制器动作变得混乱。

def update
  #... do stuff ...
  call_this_after_edit_is_clicked
end

使用after action。如果需要在多个控制器操作后调用此方法,这很方便。

after_action :call_this_after_edit_is_clicked, only: :update

使用after_update callback将代码移至模型。这使代码在模型更新时运行,而不仅仅是在使用此特定控制器进行更新时。这可能是也可能不是你想要的。

class ModelClass < ActiveRecord::Base
  after_update :call_this_after_edit_is_clicked

  # ... other stuff ...
end

要获得额外的赠送金额,请使用前三个中的一个,使用Resque(或Delayed Job或类似方式)将代码安排为后台任务。如果您的额外方法要做的事情很慢,这就是您想要去的路线。如果您要在数据库中发送通知电子邮件或更新一堆标志,请执行此操作。