2016-04-01 2 views
2

Я знаю, что это технически возможно создать путь, который позволяет любому персонажу в нем с помощью ограничений. Тем не менее, я обнаружил, что невозможно создать маршрут с точкой в ​​базе пути, например.Как создать маршрут Rails с точкой в ​​базе пути?

http://localhost:5000/.well-known/acme-challenge/ 

Это маршрут я использую:

get ':my_root/acme-challenge/:id', to: 'pages#letsencrypt', constraints: {my_root: /.+/} 

Кто-нибудь есть какие-нибудь идеи?

+0

Я прочитал [это] (http://stackoverflow.com/questions/5222760/rails-rest-routing- dots-in-the-resource-item-id), [this] (http://stackoverflow.com/questions/5369654/why-do-routes-with-a-dot-in-a-parameter-fail-to -совпадение). Затем нашел этот [блог] (http://flip.netzbeben.de/2008/07/rails-routes-and-special-characters-like-dots/). И протестировали, как 'get '/: my_root/acme-challenge /: id', до: 'settings # advanced', my_root: /.*/', и он сработал. * ограничения сегмента * могут быть записаны без использования ключевого слова 'constraint' согласно [guide] (http://guides.rubyonrails.org/routing.html#segment-constraints). –

+0

Я прочитал эти сообщения и попробовал все, что они начертили, но, похоже, не может заставить его работать ... – picardo

+0

и вы тоже попытались решить мое решение? Потому что он работал здесь. –

ответ

0

взглянуть на dynamic-segments в синем вы найдете

По умолчанию динамические сегменты не принимают точки - это потому, что точка используется в качестве разделителя для отформатированных маршрутов. Если вам нужно использовать точку в динамическом сегменте, добавьте ограничение, которое переопределяет это значение - , например id:/[^ /] +/позволяет что угодно, кроме косой черты.

вы можете попробовать

get ':my_root/acme-challenge/:id', to: 'pages#letsencrypt', controller: /my_roo\/[^\/]+/

Я надеюсь, что это помогает

Смежные вопросы