使用jquery获取rails中每个块中元素的动态id

时间:2018-01-30 08:00:52

标签: javascript jquery ruby-on-rails ajax

我在一个简单的例子中解释了我的问题。我正在构建一个食谱应用程序。在我通过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 %>

这给了我一个列表:

  • 250克奶酪
  • 1升牛奶

我现在要做的事情(仅在我的例子中)是用短语&#34替换每个金额值;嗨,它是我!&#34;。因此,我认为我可以使用以下jquery(我不使用Turbolinks)来获取每个块的动态ID:

$( document ).ready(function() {
  $('#amount-<%= ingredient.id %>').html("Hi, it's me!");
});

我希望列表是:

  • 嗨,是我! g奶酪
  • 嗨,是我! l牛奶

然而,它不起作用,我不明白我做错了什么?如果我使用静态id或静态类,它的工作原理。但是(对于我希望对每个金额执行的一些计算),我需要基于<%= ingredient.id %>的动态。

1 个答案:

答案 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 %>