レールにキャッシングを実装しようとしていますが、ホームページ全体をキャッシュしたいと考えています。これまでのところ、cache_page :home
コントローラーでメソッドを使用するのが最も簡単な方法ですが、一度も機能していないようです。これが私のhome
方法です。
def home
@banners = BannerUpload.order('series').with_attached_image
img = ActionController::Base.helpers.asset_path("share-meta.png")
@sections = Section.includes(:homepage_items).where(active: true).order('position')
@testimonials = Testimonial.where(status: true)
end
これは私が得ているエラーです:
undefined method each_with_index for nil:NilClass
オブジェクトの@banners
場合、初回でもクエリがヒットしないことを意味します。
この問題に関する記事も見つかりませんでした。さまざまなストアを設定しようとしましたが、助けにはなりません:
config.cache_store = :mem_cache_store
または
config.cache_store = :memory_store
など
編集:
私はそれを自分で解決しました。実際、レールにはデフォルトでページキャッシュが含まれていないという事実を私は知りません。そのため、正常に機能した後、gem 'actionpack-page_caching' に含める必要がありました。