18

何かのようなもの

Rails.cache.delete('site_search_form')

動作しないようです。これは可能ですか?ありがとう。

4

4 に答える 4

55

ActionController::Base.new.expire_fragment(キー)

于 2009-05-08T05:12:44.873 に答える
6

キャッシュ フラグメント エントリは、Rails.cache でアクセスするものとは少し異なるキーで作成されます。

代わりに使用してくださいexpire_fragment(コントローラーに送信できます): http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html#M000438

于 2009-04-16T16:44:04.847 に答える
2
Rails.cache.delete "views/site_search_form"
于 2014-06-14T14:45:25.530 に答える
0

Rails 5 では、次の手順を実行して、に頼らずにキャッシュを破棄しましたskip_digest: true。私たちの問題は、I18n 文字列の値を変更しても、計算されたキャッシュ ダイジェストに反映されないため、キャッシュが自動的に破棄されないことでした。

キャッシュ ブロックが定義されているビューを次に示します。

/ views/layouts/_footer.html.slim
- cache :footer do
  span= t('shared.footer')

次に、Rails コンソールで次を実行します。

fragment = ActionController::Base.new.view_context.cache_fragment_name(:footer, virtual_path: 'layouts/_footer.html.slim')
ActionController::Base.new.expire_fragment(fragment)

cache_fragment_namevirtual_pathキーワード引数に基づいてダイジェストを見つけます。

于 2017-05-26T17:24:56.067 に答える