その場で計算する属性が継続的に変化する @products のコレクションをロードしています。最初のページ インデックスですべての @products に対してすべての計算を実行したくありません。代わりに、画像の上にカーソルを置いたときに計算を実行して表示したいだけです。
まず、次のように、products/index.html.erb 内の各製品の計算を含むポップアップ ボックスを表示する jQuery 呼び出しを作成します。
products/index.html.erb
<script type="text/javascript">
jQuery(function($){
<% @products.each do |product| %>
$('#calc_<%= product.id %>').hover(function() {
$('#pid_<%= product.id %>').show()
}, function() {
$('#pid_<%= product.id %>').hide()
});
<% end %>
});
</script>
<table class='list'>
<%= render :partial => "products/product", :collection => @products %>
</table>
私の _product.html.erb:
<%= image_tag('/images/info.png', :id => "calc_#{product.id}") %>
<div class='pid_display' id='pid_<%=product.id %>'></div>
私のCSS:
.pid_display {
height: 80px;
width: 200px;
background-color: #eee;
display: none;
padding-top: 8px;
position: absolute;
}
次のように product.id で計算を実行するページを呼び出そうとしています (ただし、これが適切かどうかはわかりません)。
jQuery.ajax("products/calculations/<%= product.id %>");
計算ページへの呼び出しを組み合わせてポップアップ ボックスに結果を表示しようとすると、両方が起動します。つまり、ポップアップ ボックスが表示され、ログには、products_controller から計算が実行されたことが示されます。
これら 2 つの呼び出しを組み合わせて、ポップアップ ボックス内に計算結果を表示するにはどうすればよいですか?