Поместите пользовательский маршрут внизу вашего route.rb, это должно сработать, это даст ему наименьший приоритет и позволит сначала работать действующим маршрутам:
match '/:id', :to => 'news#show'
Важно отметить, что это в основном направит все, что ранее не было перехвачено и не существует в качестве статического файла, к этому контроллеру / действию. Вы должны убедиться, что вы отображаете страницу с ошибкой 404, если запись новостей не существует.