2
config.middleware.use
を設定して、特定のコントローラアクションを除外/無視/スキップする方法はありますか?Rails 5の特定のコントローラアクションのconfig.middleware.useをスキップする方法
例えば、Post#show
コントローラーの操作を除外したければ、
私はhttps://github.com/railslove/rack-trackerを使用してGoogleアナリティクス/タグマネージャをテストしています。
# 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']。match(/ \/posts \/show \ /?/)がどのように動作するかを理解しようとしています。ありがとうございました –
ええ、.matchは正規表現を使用して着信要求のパスを分析します。 routes.rbファイルがどのように見えるのかわからなかったので、私は/ posts/show /を汎用パスとして選択しました。あなたの投稿がパス/投稿/投稿の名前にある場合、私の正規表現は機能しません。 '/ \/posts \/[\ w ' - ] + \ /?/' – eiko
こんにちは@eiko。私は最終的に私が望んだ(レールコンソールを介してテスト)正規表現を持っていますが、私はアプリケーションを起動するときにエラーが発生しています:#の未定義のメソッド 'ハンドラー '、tracker.handler:google_tag_manager、 {container:ENV ['GTM_CONTAINER_ID']}ミドルウェアの呼び出し方法の中で、Rack Trackerを実行するという点で欠けているものがありますか?再びありがとう –