Come aggiungere un percorso al percorso principale

Nel mio plugin, ho una rotta definita in config/routes.rb come questa:

Pfaffmanager::Engine.routes.draw do
  get "/ssh-key/:hostname" => "serverkeys#get_pub_key_by_hostname", constraints: { end

E riesco a eseguire

  curl https://www.pfaffmanager.com/pfaffmanager/ssh-key/test.myforum.us

e ottenere la chiave pubblica come desiderato. :tada:

Non volendo lasciar perdere (e gli utenti quasi certamente copieranno e incolleranno questo, quindi 9 caratteri in più non significano nulla), vorrei poter eseguire

  curl https://www.pfaffmanager.com/ssh-key/test.myforum.us

Ho esaminato molti altri plugin e sembra che qualcosa del genere dovrebbe funzionare:

Discourse::Application.routes.prepend do
  get "/ssh-key/:hostname" => "serverkeys#get_pub_key_by_hostname", constraints: { hostname: /[^\/]+/ }
end

Questo non funziona affatto. Alcune cose che ho provato (ne ho provate molte e davvero non avrei dovuto perdere tempo su questa particolare girandola) sembravano intercettare correttamente la rotta, ma poi avrei dovuto fare… qualcosa… per indicare che deve cercare quel controller in pfaffmanager/get_pub_key_by_name.

Hai provato a seguire questa

e a modificare di conseguenza il parametro at:?

2 Mi Piace

Grazie, Rafael! Mi ha aiutato a risolvere.

In pratica, ho semplicemente montato il mio plugin su / e poi ho aggiunto /pfaffmanager all’inizio delle rotte in ....routes.draw. Come per la maggior parte di questi problemi, la soluzione è ovvia una volta che la si trova.

2 Mi Piace

L’altra modalità per farlo è la seguente:

1 Mi Piace