【发布时间】:2025-11-29 11:35:01
【问题描述】:
我有一个模型Painting 有很多记录。我将它们全部打印出来,并且对于每一个我想附加一些 jQuery,以便单击每个绘画呈现带有大版本绘画的部分。
<div id="viewer"></div>
<% Painting.all.each_with_index do |painting, index| %>
<%= image_tag(painting.path, id:"painting"+index%>
<% @painting = painting %>
<script type="text/javascript">
$("#painting<%=index%>").click(function() {
$("#viewer").html("<%= escape_javascript(render 'partial') %>");
});
</script>
<%end%>
_partial.html.erb
<%= image_tag(@painting.path, class:"large-painting") %>
<!-- more code -->
问题是,@painting 的值在每次循环时都会重置,到最后它等于最后一次绘画。所以无论我点击哪幅画,最后一幅永远是局部渲染的那幅。
谁能想到一种方法,让部分呈现的绘画与我点击的那个相对应,而不需要为每个单独的 jQuery 编写?
【问题讨论】:
-
你为什么将绘画分配给@painting?只需将其传递给部分
render 'partial', painting: painting,然后在部分中使用painting变量。
标签: javascript jquery ruby-on-rails variables instance-variables