Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在视图外使用rails jbuilder_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby 如何在视图外使用rails jbuilder

Ruby 如何在视图外使用rails jbuilder,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,是否可以在视图之外使用jbuilder片段缓存 我尝试以以下方式使用jbuilder和缓存: Jbuilder.encode do |json| json.cache! ['v1', @people], expires_in: 10.minutes do json.array! @people do |person| json.id person.id json.name person.name end end end Json输出con

是否可以在视图之外使用jbuilder片段缓存

我尝试以以下方式使用jbuilder和缓存:

Jbuilder.encode do |json|
  json.cache! ['v1', @people], expires_in: 10.minutes do
    json.array! @people do |person|
      json.id    person.id
      json.name  person.name
    end
  end
end
Json输出conatins实际上是“缓存”,而不是进行缓存

输出示例:
“{\”version\”:1,“people\”:{\”cache!\“:[[{\”id\”:1,“name\”

是的,这是可能的,但并不是那么简单,因为
缓存!
数组!
都是在需要视图上下文的环境中定义的。您可以在Rails控制器中使用
JbuilderTemplate
,如下所示:

template = JbuilderTemplate.encode(view_context) do |json|
  json.cache! ['v1', @people], expires_in: 10.minutes do
    json.array! @people do |person|
      json.id    person.id
      json.name  person.name
    end
  end
end

设置
视图\u上下文
很重要。在控制器之外,最好使用
Rails.cache.fetch
(事实上,正是这样)。

谢谢。最后,我使用了
Rails.cache.fetch