0

我目前使用表单的查询

 @recordsfound = Model.where(...)

它位于我的控制器中,并返回与查询匹配的所有记录。我正在使用分页一次显示有限数量的记录。但是,当我选择显示下一页时,查询会再次运行。有没有办法将返回的记录存储在实例变量以外的变量中,因此不需要重新运行查询?

非常感谢各位

4

1 回答 1

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
于 2013-06-17T22:05:23.813 回答