2017-01-26 14 views
0

私たちのエラールートに制約を追加しようとしているので、developmentのアプリケーションで作業している場合、特定のルートへのリクエストが404ページにリダイレクトされません。Railsルーティング制約 - 開発パスを制限する

match '*unmatched_route', :to => 'application#handle_404', via: :all, constraints: lambda { |request| !request.url["/rails/info"] } 

これは現在実施しているルールです。すべての「無効な」ルートは404ページにリダイレクトされます。アプリが開発モードの場合は、/rails/info/*へのアクセスのみを許可するようにこれをアップグレードしたいと思います。

私は次のことを試してみました:

match '*unmatched_route', :to => 'application#handle_404', via: :all, constraints: lambda { |request| !request.url["/rails/info"] && !Rails.env.development? } 

私は、問題がどこにあるかを正確に確認していません。制約内の追加は効果がないように見えるので、制約を完全に間違って使用していると思います。

ありがとうございます!

答えて

0

はエレガントではないかもしれませんが、あなたはこのように、unlessブロック内のルートを置くことができます:

unless Rails.env.development? 
    match '*unmatched_route', :to => 'application#handle_404', via: :all, constraints: lambda { |request| !request.url["/rails/info"] } 
end 
+0

この答えが与えられたと以前に削除されました。私は基本的には、リクエストが前記のURLと一致し、それが開発中であれば 'rails/info/* 'へのアクセスを許可したいだけです。それ以外の場合は、ステージング、制作、開発に関係なく、404にリダイレクトされるようにしてください。 –

関連する問題