3

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を直接使用してデータ/属性を変更すると思いますか?それでも...キャッシュされたデータを使用しても、ポップオーバーが機能しなくなったのはなぜですか?

4

1 に答える 1

6

自分に素早いキックを与えたいと思ったことはありませんか?? :) OK、私はそれを理解しました。私のsolutions.js.coffee(assetsフォルダー内)では、ドキュメントがロードされたときにこれをトリガーするjQueryがありました:

$('.popover-with-html').popover({ html: true })

データを更新した場所の下にある up_votes.js.erb ファイルにこの行を追加すると、データが再ロードされ、正しく表示されました。うーん、丸一日燃えましたが、時々そのように学ぶと思います。:|

于 2012-07-24T08:45:05.067 に答える