루트 경로에 라우트 추가하는 방법

플러그인에서 config/routes.rb에 다음과 같은 라우트를 가지고 있습니다:

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

그리고 이렇게 실행할 수 있습니다.

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

원하는 대로 공개 키를 가져올 수 있습니다. :tada:

좋은 정도에서 멈추고 싶지 않아서(사용자가 거의 확실히 이 주소를 복사/붙여넣을 것이므로, 9자节的 추가는 아무 의미도 없습니다), 이렇게도 할 수 있도록 하고 싶습니다.

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

다른 여러 플러그인을 살펴봤는데, 다음과 같은 코드가 작동할 것 같았습니다:

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

하지만 전혀 작동하지 않습니다. 제가 시도해 본 몇 가지 방법들(여러 가지를 시도해 봤고, 사실 이 특정 풍차와 씨름하는 데 시간을 낭비하지 말았어야 했습니다)은 라우트를 올바르게 잡아내는 것처럼 보였지만, 그 다음에 pfaffmanager/get_pub_key_by_name에서 해당 컨트롤러를 찾도록 알려주기 위해 . . . 무언가 . . .를 해야 했습니다.

다음 내용을 참고해 보셨나요?

그리고 at: 매개변수를 그에 맞게 변경해 보셨나요?

감사합니다, Rafael! 덕분에 해결했어요.

결국 플러그인을 /에 마운트하고, ....routes.draw의 라우트에 /pfaffmanager를 앞에 붙여줬어요. 대부분의 이런 문제들이 그렇듯, 답을 찾으면 너무 당연한 게 맞더라고요.

다른 방법은 다음과 같습니다: