#ruby-on-rails #routes #except
#ruby-on-rails #маршруты #кроме
Вопрос:
Я пытаюсь создать простой блог с маршрутом контроллера posts к корневому URL, а не localhost / posts /: id.
Я добавил следующее в свой файл routes…
match '/:id', :to => 'posts#show', :as => 'post'
Который работал достаточно хорошо. С тех пор это нарушило мой маршрут поиска.
match 'search/:q', :to => 'posts#query', :as => 'search'
Похоже, rails пытается найти сообщение с идентификатором моего поискового запроса. Есть ли способ сделать что-то вроде следующего, чтобы заставить файл routes предполагать, что все, что после корневого URL, является идентификатором post EXECPT для чего-либо, начинающегося с ‘search’?
match '/:id', :to => 'posts#show', :as => 'post', :except => 'search'
Ответ №1:
Rails анализирует ваши маршруты сверху вниз и останавливается на первом совпадении. Я бы поместил вашу match '/:id'...
строку ниже всех ваших других маршрутов.