私はpost
モデルを持っていhas_many :comments
ます。コメントごとに(_comment.html.erb
部分的に生成された)、コメントに星を付けることができるように小さな星のアイコンがあります。
ユーザーが星をクリックしたときにモーダル フォーム (ブートストラップ) を開きたい。
モーダルの作成方法を知っています。しかし、そのコードを_comment
パーシャルに入れると、コメントごとにレンダリングされます。
javascript を使用せずに各コメントのモーダル ウィンドウを開く方法はありますか (または、それが唯一の方法である可能性があります)。
_コメント:
<div id="comment-#{comment.id}>
<%= comment.content %>
<a href="#starModal" id="star" data-toggle="modal"><i class="icon-star"> </i></a>
</div>
<div id="starModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="starLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 style="text-align: center;">Star Me!</h3>
</div>
<div id="starpop">
<%= render :partial => 'layouts/star_form' , :locals => {:comment => comment,:post => post} %>
</div>
</div>
投稿/show.html.erb
<div class="post">
<%= @post.body %>
<% @post.comments.each do |c| %>
<%= render :partial=>'comment', :locals=>{:comment => c, :post => @post} %>
<% end %>
</div>
そのモーダルコードを正しいアプローチにするか、DRY 方法で改善することができます (また、ユーザーにとって重くありません (投稿にはページに何百ものコメントがあると想像してください..各コメントには、モデルのためだけにそのデータの 2 倍があることを想像してください) ?) ?