Rails 3 глобальный и необязательный маршрут для форматирования для облегчения кэширования страницы

#ruby-on-rails #ruby-on-rails-3 #caching #routing #format

#ruby-on-rails #ruby-on-rails-3 #кэширование #маршруты #формат

Вопрос:

Я хотел бы кэшировать практически все страницы в моем API, поэтому вместо обычно вызываемого способа .format или ?format= я хочу, чтобы конечный параметр URL был жестко закодирован в маршрут. Примеры:

 /sounds/123/xml
/sounds/123/json
/sounds/123/whats_new/xml
/sounds/xml
/sounds/blah_method/xml
  

Я знаю, что могу использовать именованные и согласованные маршруты, чтобы добавлять это к КАЖДОМУ вызову, но это не очень DRY и кажется, что должен быть лучший способ rails. Есть ли какой-либо способ добиться этого?

Ответ №1:

Вы можете подключиться к распознаванию или генерации маршрута с помощью плагина routing-filter. Он очень гибкий, взгляните.

Для генерации вашим вариантом использования было бы проверить, есть ли params[:format] и в этом случае добавить новый сегмент в конце URL.

Если вам также необходимо распознавание, на этот раз все наоборот, проверьте, есть ли конечный сегмент с '/xml' или '/json' , и в этом случае добавьте params[:format] , чтобы соответствовать ему.