我目前使用表单的查询
@recordsfound = Model.where(...)
它位于我的控制器中,并返回与查询匹配的所有记录。我正在使用分页一次显示有限数量的记录。但是,当我选择显示下一页时,查询会再次运行。有没有办法将返回的记录存储在实例变量以外的变量中,因此不需要重新运行查询?
非常感谢各位
我目前使用表单的查询
@recordsfound = Model.where(...)
它位于我的控制器中,并返回与查询匹配的所有记录。我正在使用分页一次显示有限数量的记录。但是,当我选择显示下一页时,查询会再次运行。有没有办法将返回的记录存储在实例变量以外的变量中,因此不需要重新运行查询?
非常感谢各位
我不完全确定我理解你的意思,但如果你希望查询即使在后续访问中也只在每页运行一次,你可以使用片段缓存。
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