2016-12-21 3 views
4

내 프로젝트에서 등급 시스템을 사용하고 싶습니다. http://www.jqueryrain.com/?SGgGB_oZ 프로젝트에 성공적으로 추가 했으므로 작동합니다. 나는 2 개의 모형이있다 : 카지노 & 등급. Casino 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