Average_rating Raty 在我的循环中不起作用
Average_rating with Raty isn't working in my loop
我正在使用 Raty 进行评论。我想循环显示每个产品的平均分数。
如果我只使用 <%= product.average_user %>
,那么每个产品都会显示正确的平均值 number/rating。如果我通过 id
将字段连接到嵌入式脚本以获取星星,那么第一个对象只有 5 个空星星,其他对象为空。
同样的脚本在我的产品视图中确实有效。
这是我的视图代码,没有 script
:
<div class="row">
<br/>
<%= will_paginate @products %>
<% @products.each do |product| %>
<%= link_to product do %>
<div class="col s6 m4 l2">
<div class="card" style="height: 50px">
<div class="row">
<div class="col s4 m4 l4">
<% if !product.external_image.nil? %>
<div class="card-image waves-effect waves-block waves-light valign-wrapper">
<%= image_tag product.external_image, class: "valign" %>
</div>
<% else %>
<div class="card-image waves-effect waves-block waves-light valign-wrapper">
<%= image_tag product.image, class: "responsive-img" %>
</div>
<% end %>
</div>
<div class="col s8 m8 l8">
<div class="grey-text text-darken-4 truncate valign" style="height: 25px">
<%= product.name %>
</div>
<div class="divider"></div>
<span style="height: 25px">
<%= product.average_rating %>
</span>
</div>
</div>
</div>
</div>
<% end %>
<% end %>
<%= will_paginate @products %>
这是我的视图代码 script
:
<div class="row">
<br/>
<%= will_paginate @products %>
<% @products.each do |product| %>
<%= link_to product do %>
<div class="col s6 m4 l2">
<div class="card" style="height: 50px">
<div class="row">
<div class="col s4 m4 l4">
<% if !product.external_image.nil? %>
<div class="card-image waves-effect waves-block waves-light valign-wrapper">
<%= image_tag product.external_image, class: "valign" %>
</div>
<% else %>
<div class="card-image waves-effect waves-block waves-light valign-wrapper">
<%= image_tag product.image, class: "responsive-img" %>
</div>
<% end %>
</div>
<div class="col s8 m8 l8">
<div class="grey-text text-darken-4 truncate valign" style="height: 25px">
<%= product.name %>
</div>
<div class="divider"></div>
<span id="average_rating" style="height: 25px">
</span>
</div>
</div>
</div>
</div>
<script>
$('#average_rating').raty({
path: '/assets',
readOnly: true,
score: <%= product.average_rating %>
});
</script>
<% end %>
<% end %>
<%= will_paginate @products %>
关于我在这里做错了什么以及如何解决它有什么想法吗?
解决方案:
@user2856118 为我的回答提供了基础。我只需要稍微调整一下(与下面的调整答案进行比较)。这是我的工作代码:
跨度:
<span id="average_rating_<%= product.id %>" style="height: 25px"></span>
脚本:
<script>
$('#average_rating_<%= product.id %>').raty({
path: '/assets',
readOnly: true,
score: <%= product.average_rating %>
});
</script>
将 <span id="average_rating" style="height: 25px">
更改为 <span id="average_rating_#{product.id}" style="height: 25px">
然后在你的脚本中做
$('#average_rating_<%=product.id%>').raty({
path: '/assets',
readOnly: true,
score: <%= product.average_rating %>
});
我正在使用 Raty 进行评论。我想循环显示每个产品的平均分数。
如果我只使用 <%= product.average_user %>
,那么每个产品都会显示正确的平均值 number/rating。如果我通过 id
将字段连接到嵌入式脚本以获取星星,那么第一个对象只有 5 个空星星,其他对象为空。
同样的脚本在我的产品视图中确实有效。
这是我的视图代码,没有 script
:
<div class="row">
<br/>
<%= will_paginate @products %>
<% @products.each do |product| %>
<%= link_to product do %>
<div class="col s6 m4 l2">
<div class="card" style="height: 50px">
<div class="row">
<div class="col s4 m4 l4">
<% if !product.external_image.nil? %>
<div class="card-image waves-effect waves-block waves-light valign-wrapper">
<%= image_tag product.external_image, class: "valign" %>
</div>
<% else %>
<div class="card-image waves-effect waves-block waves-light valign-wrapper">
<%= image_tag product.image, class: "responsive-img" %>
</div>
<% end %>
</div>
<div class="col s8 m8 l8">
<div class="grey-text text-darken-4 truncate valign" style="height: 25px">
<%= product.name %>
</div>
<div class="divider"></div>
<span style="height: 25px">
<%= product.average_rating %>
</span>
</div>
</div>
</div>
</div>
<% end %>
<% end %>
<%= will_paginate @products %>
这是我的视图代码 script
:
<div class="row">
<br/>
<%= will_paginate @products %>
<% @products.each do |product| %>
<%= link_to product do %>
<div class="col s6 m4 l2">
<div class="card" style="height: 50px">
<div class="row">
<div class="col s4 m4 l4">
<% if !product.external_image.nil? %>
<div class="card-image waves-effect waves-block waves-light valign-wrapper">
<%= image_tag product.external_image, class: "valign" %>
</div>
<% else %>
<div class="card-image waves-effect waves-block waves-light valign-wrapper">
<%= image_tag product.image, class: "responsive-img" %>
</div>
<% end %>
</div>
<div class="col s8 m8 l8">
<div class="grey-text text-darken-4 truncate valign" style="height: 25px">
<%= product.name %>
</div>
<div class="divider"></div>
<span id="average_rating" style="height: 25px">
</span>
</div>
</div>
</div>
</div>
<script>
$('#average_rating').raty({
path: '/assets',
readOnly: true,
score: <%= product.average_rating %>
});
</script>
<% end %>
<% end %>
<%= will_paginate @products %>
关于我在这里做错了什么以及如何解决它有什么想法吗?
解决方案:
@user2856118 为我的回答提供了基础。我只需要稍微调整一下(与下面的调整答案进行比较)。这是我的工作代码:
跨度:
<span id="average_rating_<%= product.id %>" style="height: 25px"></span>
脚本:
<script>
$('#average_rating_<%= product.id %>').raty({
path: '/assets',
readOnly: true,
score: <%= product.average_rating %>
});
</script>
将 <span id="average_rating" style="height: 25px">
更改为 <span id="average_rating_#{product.id}" style="height: 25px">
然后在你的脚本中做
$('#average_rating_<%=product.id%>').raty({
path: '/assets',
readOnly: true,
score: <%= product.average_rating %>
});