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 に答える