#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]
, чтобы соответствовать ему.