2
有沒有辦法設置config.middleware.use
來排除/忽略/跳過特定的控制器操作?如何在Rails 5中跳過config.middleware.use進行特定的控制器操作
例如,如果我想排除Post#show
控制器操作。
我使用https://github.com/railslove/rack-tracker來測試Google Analytics/Tag Manager。
# Rack Tracker config
config.middleware.use(Rack::Tracker) do
handler :google_tag_manager, { container: ENV['GTM_CONTAINER_ID'] }
end
我以爲我可以使用這樣一個條件:
# Rack Tracker config
config.middleware.use(Rack::Tracker) do
handler :google_tag_manager, { container: ENV['GTM_CONTAINER_ID'] } if app.route != ApplicationController::PostController.show
end
任何幫助深表感謝。
感謝:但是,您可以通過在其他中間件包裝這個中間件,像這樣繞過此:
,然後。有關.match方法的問題,這是否與通過路徑的Post#show動作相匹配,這是如何工作的?所以如果帖子路徑是「posts/hello-world /」,這將匹配?嘗試瞭解如果env ['REQUEST_PATH']。匹配(/ \/posts \/show \ /?/)如何工作。再次感謝 –
是的,.match使用正則表達式來分析傳入請求的路徑。我選擇/ posts/show /作爲通用路徑,因爲我不知道你的routes.rb文件是什麼樣的。如果你的帖子位於路徑/ posts/name-of-post,那麼我的正則表達式將不起作用。嘗試用它替換它:'/ \/posts \/[\ w' - ] + \ /?/' – eiko
嗨@eiko。我終於得到了我想要的正則表達式(通過Rails控制檯進行測試),但在啓動應用程序時出現錯誤:#的undefined方法'handler',與tracker.handler:google_tag_manager有關, {container:ENV ['GTM_CONTAINER_ID']}。在中間件調用方法中運行Rack Tracker方面有什麼缺點?再次感謝 –