Jquery 铁路中的星级制度
在我的项目中,我想使用一个评级系统,我已经成功地将它添加到我的项目中,并且它可以工作。我有两个模型:赌场和评级。赌场Jquery 铁路中的星级制度,jquery,ruby-on-rails,ajax,rating-system,Jquery,Ruby On Rails,Ajax,Rating System,在我的项目中,我想使用一个评级系统,我已经成功地将它添加到我的项目中,并且它可以工作。我有两个模型:赌场和评级。赌场有很多:评级,评级属于:赌场。在我的赌场索引页面上,我想显示每个赌场的评级系统。我的看法是: <h1>List of casinos</h1> <div class="casinos-list"> <% @casinos.each do |casino| %> <div class="casino-item">
有很多:评级,评级属于:赌场。在我的赌场索引页面上,我想显示每个赌场的评级系统。我的看法是:
<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>
它可以工作,将正确的值保存到db,但是,正如您所看到的,我在这里使用了赌场.ratings.last的表单。我需要在评级数组中添加一个新的评级,但不需要更改最后一个。你知道我该怎么做吗?谢谢。如果您只想添加一个新的评级,请删除casino.ratings.last
。仅保留casino.ratings.build
作为一个赌场有多个评级
,是否要在赌场索引视图中显示其所有评级?否,我将在索引页上显示每个赌场的平均评级如果您只想添加一个新评级,请删除casino.ratings.last
。只保留casino.ratings.build
Yep,谢谢,就这样!一如往常:显而易见的事情是表面上的。请把它作为答案贴出来。
$(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()
});
});
});