Rails 3でTwitterブートストラップポップオーバーを使用しています。
最初にページをロードするとき(アクションを表示)、ポップオーバーは正しく機能します。
私のパーシャル(1つは別のを呼び出します)は次のようになります:
<span class="solution_votes_stat" id="<%= 'solution_votes_stat_' + sid.to_s %>">
<%= render :partial => 'solutions/popover', :locals => {:s => s} %>
</span>
_popover.html.erbは次のようになります。
<% sid = s.id %>
<% solution_vote_up_count = s.solution_votes.votes_up.count %>
<% all_users_who_voted_up(sid) %>
<span class = "popover-with-html" rel = "popover"
data-original-title = "Who likes this"
data-content = "<%= render :partial => 'solutions/users_who_voted_up', :locals => {:users_who_voted_up => @users_who_voted_up} %>"
id="<%= 'solution_' + sid.to_s + '_up_votes' %>">
<%= solution_vote_up_count %>
</span>
<%= solution_vote_up_count==1 ? "Advisor" : "Advisors" %>
これにより、次のようなHTMLが生成されます。
<span class="solution_votes_stat" id="solution_votes_stat_1">
<span class = "popover-with-html" rel = "popover"
data-original-title = "Who likes this"
data-content = "<ul><li>Admin</li></ul>"
id="solution_1_up_votes">1
</span>
Advisor
</span>
これまでのところ、とても良い=>それはすべて正しく機能します。
問題は、これをjQueryで更新しようとしたときです。
私のup_votes.js.erbには、次のものがあります。
update_popover = ('<%= escape_javascript(render(:partial => "solutions/popover", :locals => {:s => @solution}))%>');
$('<%= "#solution_votes_stat_"+@solution.id.to_s %>').html(update_popover);
テストとして、私は投票を下にクリックし、次に投票を上にクリックしました。生成されたHTMLを見ると、このdivでは機能しない(ポップオーバーがない)ことを除けば、上記のHTMLとまったく同じに見えます。ポップオーバーは、他のすべてのdiv(同じHTMLを使用)で引き続き機能します。
何が起こっているのか、そしてこれを修正する方法について何かアイデアはありますか?
更新:それはそれをキャッシュしているように見えます。投票をクリックしてdivHTMLが何であるかを確認し、Chrome開発者ではHTMLは正しい(0投票など)が、ページソースを見ると変更されていません(1投票など)。まだこれについて何をすべきかわからない...パーシャルをレンダリングする代わりに、jQueryを直接使用してデータ/属性を変更すると思いますか?それでも...キャッシュされたデータを使用しても、ポップオーバーが機能しなくなったのはなぜですか?