我有一个看起来像下面代码的Rails控制器。在external_click方法之后触发after_action。但是我最近添加了另一个代码路径,以防引用程序无效,现在我看到我不希望为该路径触发after_action。有没有一种方法可以防止在else子句中触发after_action。
class ClicksController < ApplicationController
after_action :track_click, only: :external_click
def external_click
if params[:url].present?
if valid_referer?(request.referer)
redirect_to processed_url
else
redirect_to product_show_path(Product.find(params[:product_id]))
end
else
not_found
end
end
答案 0 :(得分:2)
您可以通过条件将回调传递给proc。
after_action :track_click, only: :external_click, if: -> { params[:url].present? }