0

我正在使用 Raty 进行评论。我想在循环中显示每个产品的平均分数。

如果我只使用<%= product.average_user %>,那么每个产品都会显示正确的平均数/评分。如果我将字段连接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>   
4

1 回答 1

0

更改<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 %>
        });
于 2015-11-02T16:01:23.753 回答