1

URL に /account.111 または /profile.111 を入力できます。これらのルートが Rails アプリケーションによって受け入れられないようにすることは可能ですか?

4

3 に答える 3

1

あなたはフォーマットを制約するかもしれません、これはうまくいくはずです

get '/account', constraints: { format: 'html' }

しかし、あなたが何を達成しようとしているのかはまだわかりません。誰かがフォーマットに数字を入れるのはなぜですか?

編集

すべてのルートを制約ブロックに入れることができますが、それは本当にスマートでも効果的でもないと思います

constraints: { format: 'html' } do
  ...
end
于 2013-06-20T10:21:46.613 に答える
0

constraints上にブロックを追加するだけroutes.rb

#config/routes.rb   
constraints(EndingWithDigit) do 
 match '*path' => redirect('/404')
end

次に、クラスEndingWithDigitを作成しますlib/ending_with_digit.rb

#lib/ending_with_digit.rb
class EndingWithDigit
 def self.matches?(request)
   path = request.fullpath 
   if path =~ /^\/[\w]+[.]{1}+[\d]+/
     true
   else
    false
  end
 end
end

今、それを含めますconfig/initializers/

#config/initializers/constraints.rb
require "ending_with_digit.rb"

Ruby 正規表現をチェックして、404 に送信する URL を確認できます。

于 2013-09-07T18:42:30.410 に答える