Vraag Rails catch-all route


Ik gebruik rails 3.0.14 en bouw routes.rb met behulp van de vindingrijke stijl. Ik wil graag een wildcardroute die alle verzoeken opvangt die niet overeenkomen met de vermelde route.

Wat is de juiste manier om zo'n route te bouwen?


18
2017-11-14 22:48


oorsprong


antwoorden:


leggen

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

aan het einde van het bestand routes.rb. Dit is belangrijk, omdat de routes van boven naar beneden zijn gestapt.

Zie ook http://guides.rubyonrails.org/routing.html -> 3.10


28
2017-11-14 22:58



Voor Rail 4 moet u het verzoektype opgeven:

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

Zoals anderen al hebben gezegd, zet dit helemaal onderaan je routebestand.


20
2017-11-14 17:19



Het is niet verplicht om exact "pad" in de. Te gebruiken match '*path' uitspraak. Je kunt daar een token instellen:

get "*string1"

of

get "*string2"

Rails wijst uw echte HTTP-query toe aan de param die is genoemd naar uw token, bijvoorbeeld:

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

in console:

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

Je kunt bijvoorbeeld meer dan één sterretje gebruiken get "*id*user". Maar in dit geval krijg je een onvoorspelbaar resultaat, omdat Rails 2 of meer sterretjes "op een intuïtieve manier" verwerkt - voor meer info zie http://guides.rubyonrails.org/routing.html#route-globbing-and-wildcard-segments


4
2017-08-24 10:16



Naast @steel en @awenkhh raad ik aan het volgende toe te voegen aan de controlleractie van die route

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

Anders kom je bij sommigen terecht ActionView::MissingTemplate: Missing template fouten voor indelingen die u niet verwachtte.

[rant] Vooral nuttig voor die mensen die foutieve aanvalsvectoren in de buurt proberen /wp-admin/css/wp-admin.css en dergelijke. Ik krijg ongeveer 100 aanvragen voor /wp-admin/* per dag, van super irritante mensen die blijkbaar zouden willen dat ik een duurder Rollbar-accountplan zou krijgen. [/ t]


2
2017-12-04 16:36