Как я возвращаю memcached строку, основанную на типе response_to? - PullRequest
0 голосов
/ 13 февраля 2010

У меня есть группа категорий, и я получаю доступ к этим категориям через javascript несколько раз в течение среднего курса использования моего приложения через JSON.

Так что в моем контроле в настоящее время у меня есть

@categories = Category.all

respond_to do |format|
  format.html # index.html.erb
  format.json 

вместе с соответствующим файлом index.json.erb, который форматирует то, что мне нужно, до JSON.

Теперь я хочу добавить к этому некоторые функции memcached, чтобы в файле index.json.erb я добавил

<% cache "JSON_CATEGORIES_ALL" do -%> block around my output

У меня вопрос: как заставить мой контроллер вызывать этот ключ кэша при ответе на запрос JSON и нормально работать, извлекая из базы данных другие вызовы?

Спасибо

Ответы [ 2 ]

1 голос
/ 13 февраля 2010

Вы можете проверить формат запроса:

@categories = Category.all unless request.format == "application/json" and fragment_exists?("JSON_CATEGORIES_ALL")

respond_to do |format|
  format.html # @categories is available
  format.json # no database call if your cache fragment already exists
end
0 голосов
/ 14 февраля 2010

Я понял это ... для любого, кто сталкивается с этим здесь, это.

@categories = Category.all unless request.format == "application/json" and Rails.cache.exist?("views/JSON_CATEGORIES_ALL")

ВНИМАНИЕ: добавление представлений / к ключу кэша! кажется, рельсы предвосхищают это кэшам, сделанным на представлении.

agregoire: Спасибо за

request.format == "application/json"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...