如何根据respond_to类型返回memcached字符串?

时间:2010-02-13 05:45:10

标签: ruby-on-rails memcached

我有一组类别,我通过JSON在我的应用程序的平均使用过程中多次通过javascript访问这些类别。

所以在我的控制下,目前我有一个

@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 个答案:

答案 0 :(得分:1)

您可以查看请求的格式:

@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

答案 1 :(得分:0)

我明白了......对于任何偶然发现它的人来说。

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

注意:向缓存键添加了views /!似乎rails会将此预先设置为视图上的缓存。

agregoire:谢谢

request.format == "application/json"