ruby-on-rails - 基于会话 id 的片段缓存
问题描述
我正在寻找一种基于 ruby on rails 中的会话 ID 在特定表单(新操作)上使用片段缓存的方法。这些表格应在会话销毁或这些表格中使用的记录发生任何更改时过期。
问题: 这些表单内容会根据用户类型而变化,例如针对某些用户类型显示某些字段。当我缓存表单时,它会为所有用户类型的登录显示相同的表单。
新的.html.erb
<% cache 'procedure_form_cache', skip_digest: true do %>
<div class="container">
<hr>
<h3>Procedure</h3>
<%= render 'form', procedure: @procedure %>
</div>
<%end%>
程序.rb
class Procedure < ApplicationRecord
def expire_cache
ActionController::Base.new.expire_fragment('procedure_form_cache')
end
end
我希望基于表单中的会话 ID 的片段缓存
解决方案
<% cache [session.id, @procedure.updated_at] do %>
<div class="container">
<hr>
<h3>Procedure</h3>
<%= render 'form', procedure: @procedure %>
</div>
<%end%>
应该可以解决问题,如果会话 id 更改或@procedure
.
推荐阅读
- c++ - 如何在文件属性的高级安全选项卡中找到“继承自”字段?
- node.js - Create-React-App (CRA) 在创建新的 React 应用程序时卡住
- types - VHDL 错误 (10479):已使用索引名称类型但未声明
- r - 如何将数据分成指定比例的两部分不是随机的
- python - python随机选择没有重复
- java - 在单元测试之前从 .sql 预加载数据会引发语法错误
- magento - Magento 1:mysql-4 升级脚本不起作用
- wcf - ADAL - 访问令牌在 1 小时后过期并且没有获得刷新令牌
- jenkins - Jenkins 声明式管道构建失败 - 节点丢失
- java - if v/s while: 对于这段代码,如果我正在使用 while 循环,它会继续无限循环,但是当使用 "if(low
数组:4,1,5,8,2,6,9,7,11,3
public static void quickSort(int arr[], int low, int high) { System.out.pr