В моем проекте я хочу использовать рейтинговую систему http://www.jqueryrain.com/?SGgGB_oZ Я успешно добавил ее в свой проект, и он работает. У меня есть 2 модели: Казино & Рейтинг. Казино has_many :ratings
, и рейтинг belongs_to :casino
. На моей странице индекса казино я хочу отобразить систему рейтинга для каждого казино. Это мое мнение:Система рейтинга звезд в рельсах
<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
Мои:
$(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()
});
});
});
И это работает, сохраняя правильное значение в БД, но, как вы можете видеть, я использую здесь form_for casino.ratings.last
. Мне нужно добавить новый рейтинг в массив рейтингов, но не менять последний. Любые идеи, как мне это сделать? Благодарю.
Как один «казино имеет много оценок», вы хотите показать все свои рейтинги в виде индексов казино? –
Нет, я покажу средний рейтинг для каждого казино на индексной странице –
Если вы хотите просто добавить новый рейтинг, удалите 'casino.ratings.last'. держите только 'casino.ratings.build' –