У меня есть приложение в стиле CMS, в котором пользователь может установить собственный URL-адрес, и оно направляется на наш контроллер "content_pages".
Для поддержки этого мы определили 3 подстановочных маршрута.
Я пытаюсь ограничить эти подстановочные знаки, чтобы они отвечали только на запросы с форматом html, json или xml и ничем иным. Это связано с проблемой, когда отсутствующий файл favicon.ico приводит к серии запросов и веб-запросов, поскольку он направляется на контроллер content_pages, а затем на 404.
Вот что у меня есть, но ограничение просто не работает. (favicon все еще маршруты)
get "/:id/edit", to: "content_pages#edit", :constraints => {:id => /.*/, :format => "[html|xml|json]"}, as: :edit_content_page
put "/:id", to: "content_pages#update", :constraints => {:id => /.*/, :format => "[html|xml|json]"}, as: :content_page
get "/:id", to: "content_pages#show", :constraints => {:id => /.*/, :format => "[html|xml|json]"}, as: :content_page
Я также пытался поместить это в пользовательский класс ограничений, но затем действия над контентом content_pages, которые здесь не включены (например, / content_pages, который ведет к индексу), не отображаются.
Вот предыдущий оператор ресурса, который связывает другие действия.
resources :content_pages, except: [:get, :edit, :update] do
collection do
get :get_url
end
end
Есть какие-нибудь мысли о том, как я могу применить это ограничение, не нарушая наши другие, неограниченные действия?