我的 Rails 应用程序有Post
和Member
模型。内posts/:id/show
包含一个“喜欢”按钮,会员可以单击该按钮,如果@member
已经“喜欢”了这个按钮,则为“不喜欢” @post
。
(此按钮将链接到执行一些 ajax 并使“喜欢”按钮变为“不喜欢”按钮的发布操作)
缓存按钮的最佳做法是什么?(下面的代码显然没有缓存按钮 html)。
我应该添加:touch => true
,member.rb
然后为按钮制作一个缓存键<% cache ['V1', @post, @member, 'like_button']
吗?(似乎多余?)
post.rb
has_many :likes
喜欢.rb
belongs_to :member
belongs_to :post
成员.rb
has_many :likes
*帖子/show.html.erb *
<% cache ['V1', @post, 'show'] do %>
<h1>@post.title</h1>
<div class="content">@post.content</div>
<% end %>
<%= render 'like_button', :post=> @post, :member => @member %>
** 帖子/_like_button.html.erb **
<% if member.liked_post?(post) %>
<%= link_to unlike_post_path(post), :method => :post, :remote => true, :class => 'btn' %>
<% else %>
<%= link_to like_post_path(post), :method => :post, :remote => true, :class => 'btn' %>
<% end %>