하나의 액션 블록에서 2 개의 비슷한 경로를 잡아 내고 싶습니다. Rails5에서는 쉽게 할 수 있습니다. 내가 처음이 선언이 날만큼 폴더 끝에 마지막 파일 이름에서 a/b/c/d...
및 :file
처럼 될 수 :folder
을 잡을 수 있습니다포도에서 한 블록에 두 개의 경로를 만드는 방법은 무엇입니까?
get ':folder/:file' => 'get#index', :file => /.*/, :folder => /.*/
get ':file' => 'get#index', :file => /.*/
. 둘째로 파일 이름 만 잡을 수도 있습니다. 두 경로 모두 동일한 작업을 대상으로합니다.
그러나, 포도에서이 메소드 정의에 블록이 아닌 경로로 선언되어 있기 때문에, 나는
잡을 수있는 방법이 있나요 ... 두 번 같은 블록을 작성해야 모두/as/many/folder/and/file.ext
한 경로에서 바로
/file.ext
매개 변수? 나는 선택적 매개 변수, 요구 사항을 시도했다. 그들 중 누구도 일하지 않았습니다.
:folder/:file
(두번 regexp)을 사용하는 이유는 수동으로 분할하지 않고 :folder
매개 변수와 :file
매개 변수를 별도로 잡을 수 있기 때문입니다.
get ':folder/:file', requirements: { file: /.*/, folder: /.*/ } do
# params[:folder] and params[:file]
end
get ':file', requirements: { file: /.*/ } do
# params[:file]. [:folder is empty.]
end
^^ 나는 그들을 하나의 단일 경로로 만들고 싶습니다. 폴더가 존재하면 (중첩 된 경우) 폴더 param에서 폴더를 가져오고 그렇지 않으면 폴더는 nil이됩니다.