如何添加动态缓存到时间,或者我应该使用片段缓存?
我试图关注RailsCasts,但没有任何作用。
_feed.html.rb
<% cache feed do %>
<div class="feed">
<div id="time">
<%= render 'shared/time' unless @page_caching %>
</div>
<p class="pull-right grey"><%= time_ago_in_words(feed.posted_at) %></p>
<div class="clearfix">
<p class="grey"><%= image_tag feed.profile_pic, :class => 'pic', :size => '15x15' %> @<%= feed.name %></p>
</div>
<p class="content"><%= raw auto_link(feed.content, :username_include_symbol => true, :target => '_blank') %></p>
</div>
<% end %>
_time.html.rb
<p class="pull-right grey"><%= time_ago_in_words(feed.posted_at) %></p>
index.js.rb
$('#feeds').append('<%= j render(@feeds) %>');
<% if @feeds.next_page %>
$('.pagination').replaceWith('<%= j will_paginate(@feeds) %>');
<% else %>
$('.pagination').remove();
<% end %>
$('#time').prepend('<%= j render("shared/time") %>');
feeds_cotroller.rb
def index
@page_caching = true
@feeds = Feed.page(params[:page]).per_page(12)
end
答案 0 :(得分:0)
使用随时间变化的助手不应在缓存块中使用。对此最好的解决方案是使用js插件为您插入时间字符串。谷歌的timeago js插件,你会得到一堆有用的结果。第一个结果出现在http://timeago.yarp.com/中。使用该插件,您的代码应如下所示(我已插入一个应插入时间字符串的脚本)
<% cache feed do %>
<div class="feed">
<div id="time">
<%= render 'shared/time' unless @page_caching %>
</div>
<p class="pull-right grey timeago" title="<%= feed.posted_at %>"></p>
<script>
jQuery(document).ready(function() { jQuery("p.timeago").timeago() })
</script>
<div class="clearfix">
<p class="grey">
<%= image_tag feed.profile_pic, :class => 'pic', :size => '15x15' %> @<%= feed.name %>
</p>
</div>
<p class="content"><%= raw auto_link(feed.content, :username_include_symbol => true, :target => '_blank') %></p>
</div>
<% end %>
这是一个简单的实现。您可能希望将js调用移动到资产文件,因此您不必在缓存中调用它。无论如何,这应该给你一个想法。