2016-12-21 21 views
4

私のプロジェクトでは、評価システムを使用したいhttp://www.jqueryrain.com/?SGgGB_oZ私はプロジェクトに正常に追加しました。私は2つのモデルがあります:カジノ&評価。カジノhas_many :ratings、評価belongs_to :casino。私のカジノのインデックスページでは、各カジノの格付けシステムを表示したいと思います。あなたが見ることができるように私はここにform_for casino.ratings.last使用し、レール内の星評価システム

$(document).on('turbolinks:load', function() { 

    $('.rateit-reset').remove(); 

    $('.rateit-hover').click(function() { 
    var rating = $(this).parents().attr('aria-valuenow'); 
    var float_number = parseFloat(rating); 
    var rating_form_input = $(this).parents().parents('.casino-item').children('.rating').children('.star_rating_form').children('.star-value'); 
    var form_id = $(this).parents().parents('.casino-item').children('.rating').children('.star_rating_form').attr('id'); 
    rating_form_input.val(float_number); 

    $.ajax({ 
     type: 'post', 
     url: $('#' + form_id).attr('action'), 
     data: $('#' + form_id).serialize() 
    }); 
    }); 

}); 

そしてそれは、dbに適切な値を保存し、動作しますが、:

<h1>List of casinos</h1> 

<div class="casinos-list"> 
    <% @casinos.each do |casino| %> 
    <div class="casino-item"> 
     <p class="casino-name"><%= link_to casino.name, casino %></p> 
     <p class="casino-description"><%= casino.description %></p> 
     <ul class="rating"> 
     <% form_id = "casino_#{casino.id}_rating" %> 
     <%= form_for casino.ratings.last || casino.ratings.build, html: 
      { id: "casino_#{casino.id}_rating", class: 'star_rating_form' } do |f| %> 
      <%= f.hidden_field :casino_id %> 
      <%= f.hidden_field :score, id: "#{form_id}_stars", class: 'star-value' %> 
     <% end %> 

     </ul> 
     <div id="<%= "average_rating_#{form_id}" %>"><%= casino.average_rating.to_f %></div> 
     <div id="<%= "rate_#{casino.id}" %>" class="rateit" data-rateit-mode="font"> 
     </div> 
    </div> 
    <% end %> 
</div> 

マイapplication.js:これが私の見解です。評価の配列に新しい評価を追加する必要がありますが、最後の評価を変更する必要はありません。どのように私はそれを行う必要があります任意のアイデア?ありがとう。

+0

「カジノには多くの格付けがある」と言いますが、カジノのインデックスビューで彼の格付けをすべて表示しますか? –

+0

いいえ、インデックスページで各カジノの平均格付けを表示します –

+0

新しい格付けを追加したい場合は、 'casino.ratings.last'を削除してください。 'casino.ratings.build'だけを保つ –

答えて

2

新しい評価を追加する場合は、casino.ratings.lastを削除してください。ただ保つcasino.ratings.build