我目前使用表单
的查询 @recordsfound = Model.where(...)
它位于我的控制器中,并返回与查询匹配的所有记录。我正在使用分页来一次显示有限数量的记录。但是,当我选择显示下一页时,将再次运行查询。有没有办法存储在实例变量以外的变量中返回的记录,因此不需要重新运行查询?
非常感谢你们
答案 0 :(得分:1)
我不完全确定我理解你的意思,但是如果你想让查询每次只运行一次,即使在后续访问中也是如此,你可以使用片段缓存。
Rails会延迟加载,然后在视图中遇到查询时使用缓存。
<% results.each do |result| %>
<% cache result do %>
<%= result.foo %>
<% end %>
<% end %>
如果您有任何依赖模型,则必须确保在必要时更新缓存时使缓存过期:
belongs_to :result, touch: true
请注意,如果您处于开发环境中,则查询仍将运行。您可以在development.rb
配置文件中更改此设置。如果您确实更改了此设置,请不要忘记还原它。否则会发生奇怪的事情,你会浪费时间去弄清楚为什么你的变化不可见。
config.action_controller.perform_caching = true