Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails—如何从片段缓存中排除代码块_Ruby On Rails_Caching - Fatal编程技术网

Ruby on rails Rails—如何从片段缓存中排除代码块

Ruby on rails Rails—如何从片段缓存中排除代码块,ruby-on-rails,caching,Ruby On Rails,Caching,我使用的是片段缓存,但我有特定于用户的内联代码,如: <% cache @page do %> stuff here <% if current_user %> user specific <% end %> more here <% end %> 这里的东西 用户特定 更多 所以我想排除几个特定于用户的代码块。在Rails中有没有这样做的方法,或者我应该在开始时做一个if语句,为登录用户和普通访问者创建不同的缓存?(我将以这种方

我使用的是片段缓存,但我有特定于用户的内联代码,如:

<% cache @page do %>
  stuff here
<% if current_user %>
  user specific
<% end %>
  more here
<% end %>

这里的东西
用户特定
更多

所以我想排除几个特定于用户的代码块。在Rails中有没有这样做的方法,或者我应该在开始时做一个if语句,为登录用户和普通访问者创建不同的缓存?(我将以这种方式大量复制代码)。

对于每个用户片段,您可以将模型放入一个数组中:

<% cache [@page, current_user] do %>

这样,您的片段将在用户/页面更新时失效,因为时间戳来自于他们在处更新的

使用您的帮助程序,然后您可以调用方法thenhey@jdoe这对于用户持有的私人信息非常好,但我正在寻找,比如显示“编辑此”链接用户是否已登录。也许我以后会在end@Tom您可以用
替换
当前用户
!!当前用户
。这样,缓存键将以
/true
(如果用户已登录)结束,否则以
/false
结束。
pages/page_id-page_timestamp/users/user_id-user_timestamp