10

特定のコントローラに行くために、ある制約を満たすすべてのリクエストが必要です。だから私はキャッチオールルートが必要です。それをRailsでどのように指定するのですか?それはこれのようなものですか?Ruby on Railsでキャッチオールルートを作成するには?

match '*', to: 'subdomain_controller#show', constraints: {subdomain: /.+\.users/} 

本当にすべての可能なルートをキャッチしますか?入れ子になったディレクトリがたくさんある場合でも、すべりが発生しないようにすることは重要です。

Ruby on Rails 3.2を使用していますが、4.0にアップグレードする準備ができています。

UPDATE'*path'動作しているようです。しかし、私が取り組んでいる問題は、ファイルが私のpublicディレクトリに存在するときはいつも、Railsがそれをレンダリングすることです。

UPDATE:

#RAILS 3 
#make this your last route. 
match '*unmatched_route', :to => 'application#raise_not_found!' 

#RAILS 4, needs a different syntax in the routes.rb. It does not accept Match anymore. 
#make this your last route. 
get '*unmatched_route', :to => 'application#raise_not_found!' 

そして

​​

+0

私はこの質問への答えだと思う: [http://stackoverflow.com/questions/4132039/rails-redirect-all-unknown-routes-to-root-url][1] [1]:http://stackoverflow.com/questions/4132039/rails-redirect-all-unknown-routes-to-root-url – ksu

+1

@ksu - それの '* PATH'そう?そして、 'params [:path]'はパスを保持しますか? –

答えて

0

これは、私はあなたがこのアプローチでは微調整が必​​要だと思うが、あなたはポイントを得る

Calamas::Application.routes.draw do 
    get '*path', to: 'subdomain_controller#show',constraints: lambda { |request| request.path =~ /.+\.users/ } 
end 
+0

これを試したことはありませんが、 ':subdomain'をパスとして混乱させるようですね。パスまたはサブドメインの制約は、その後ですか? –

+0

私の以前の回答はあなたのケースではうまくいかなかったでしょう。私の更新された答えを見てください。 Documentation here - > http://guides.rubyonrails.org/routing.html#advanced-constraints – usha

+0

これは 'public'ディレクトリにあるルートパスやパスに対しては機能しません。ルートパスは大したことではありません。ルートファイルにルートを追加できます。しかし、私はどのように克服するか分からない他の問題。 –

18

を動作するはずです彼女の詳細情報E:https://gist.github.com/Sujimichi/2349565

+0

これは 'public'ディレクトリに存在するルートパスやパスに対しては機能しません。ルートパスは大したことではありません。ルートファイルにルートを追加することができます。しかし、私はどのように克服するか分からない他の問題。 –

+0

Rails 4ではエラーです:rake aborted! HTTPメソッドを指定せずにルータで 'match'メソッドを使うべきではありません。アクションをGETとPOSTの両方に公開したい場合は、via:[:get、:post]オプションを追加してください。あなたの行動をGETに公開したい場合は、ルータで 'get'を使用してください。代わりに:match" controller#action " Do:" controller#action "を取得 –

+0

はい、Rails 4はルート.rb。それはもはやマッチを受け入れません。 get '* unmatched_route'、:to => 'application#raise_not_found!' – TheAshwaniK

関連する問題