私の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
like.rb
belongs_to :member
belongs_to :post
member.rb
has_many :likes
* posts / 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 %>