编辑表单完美无缺。我想在编辑个人资料后调用一个方法[通知我们已经编辑过]。这样做的正确方法是什么?
还有很多路线但是......我不确定它们是否是必要的信息
resources :profiles
...
# GET /profiles/1/edit
def edit
end
def call_this_after_edit_is_clicked
...
end
答案 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或类似方式)将代码安排为后台任务。如果您的额外方法要做的事情很慢,这就是您想要去的路线。如果您要在数据库中发送通知电子邮件或更新一堆标志,请执行此操作。