26

私は Rails 3.0.14 を使用しており、機知に富んだスタイルを使用して routes.rb を構築しています。記載されているどのルートにも一致しないすべてのリクエストをキャッチするワイルドカード ルートが必要です。

そのようなルートを構築する適切な方法は何ですか?

4

4 に答える 4

33

置く

match '*path' => 'your_controller#your_action'

routes.rb ファイルの最後にあります。ルートはトップダウンでステップスルーされるため、これは重要です。

http://guides.rubyonrails.org/routing.html -> 3.10も参照してください。

于 2012-11-14T22:58:33.840 に答える
28

Rail 4 の場合、リクエスト タイプを指定する必要があります。

match "*path", to: "application#custom_action", via: :all

他の人が言ったように、これをルートファイルの一番下に置きます。

于 2014-11-14T17:19:59.257 に答える
7

match '*path'ステートメントで正確に「パス」を使用することは必須ではありません。そこに任意のトークンを設定できます:

get "*string1"

また

get "*string2"

Rails は、実際の HTTP クエリを、トークンにちなんで名付けられたパラメーターに割り当てます。例:

get "*user" => "users#show"

コンソールで:

Started GET "/john" ....  
Processing by UsersController#show as HTML 
Parameters: {"user"=>"john"}

のように複数のアスタリスクを使用できますget "*id*user"。ただし、この場合、Rails は 2 つ以上のアスタリスクを「直感的な方法で」処理するため、予測できない結果が得られます。詳細については、 http: //guides.rubyonrails.org/routing.html#route-globbing-and-wildcardを参照してください。 -セグメント

于 2016-08-24T10:16:44.260 に答える
3

@steel と @awenkhh に加えて、そのルートのコントローラー アクションに以下を追加することをお勧めします

respond_to do |format|
  format.html
  # other formats you already support
  format.all { render text: '' }
end

そうしActionView::MissingTemplate: Missing templateないと、予期しない形式のエラーが発生することになります。

[暴言] 間違った攻撃ベクトルを試している人などに特に役立ちます/wp-admin/css/wp-admin.css。1 日に約 100 件のリクエストを/wp-admin/*受け取っているようです。非常に迷惑な人々から、より高価なロールバー アカウント プランを取得するように求められているようです。[/暴言]

于 2015-12-04T16:36:21.110 に答える