我在一个简单的例子中解释了我的问题。我正在构建一个食谱应用程序。在我通过AJAX加载的show partial中,我执行以下操作:
_show.html.erb
<% @recipe.ingredients.each do |ingredient| %>
<div class="col-xs-12" id="ingredient-<%= ingredient.id %>">
<div id="amount-<%= ingredient.id %>"><%= ingredient.amount %></div>
<%= ingredient.unit.unit_name %>
<%= ingredient.ingredient_name %>
</div>
<% end %>
这给了我一个列表:
我现在要做的事情(仅在我的例子中)是用短语&#34替换每个金额值;嗨,它是我!&#34;。因此,我认为我可以使用以下jquery(我不使用Turbolinks)来获取每个块的动态ID:
$( document ).ready(function() {
$('#amount-<%= ingredient.id %>').html("Hi, it's me!");
});
我希望列表是:
然而,它不起作用,我不明白我做错了什么?如果我使用静态id或静态类,它的工作原理。但是(对于我希望对每个金额执行的一些计算),我需要基于<%= ingredient.id %>
的动态。
答案 0 :(得分:1)
好的,我发现了我的错误。虽然愚蠢的错误。我必须将jquery部分放在每个do块中。否则,当然,&lt;%= ingredient.id%&gt;没有定义。
解决方案现在看起来像这样:
<% @recipe.ingredients.each do |ingredient| %>
<div class="col-xs-12" id="ingredient-<%= ingredient.id %>">
<div id="amount-<%= ingredient.id %>"><%= ingredient.amount %></div>
<%= ingredient.unit.unit_name %>
<%= ingredient.ingredient_name %>
</div>
<script>
$('#amount-<%= ingredient.id %>').html("Hi, it's me!");
</script>
<% end %>