昨天我问了另一个关于javascript问题的question。我有宝石'jquery-turbolinks','〜> 0.2.1'安装。
问题是帖子的评级没有显示(显示星标)。它几天前工作得很好,但现在它只是不显示星星。
ratings.coffee
ready = ->
$("form[data-update-target]").bind "ajax:success", (evt, data) ->
target = $(this).data("update-target")
$("#" + target).prepend data
$('#content').val('')
$('.rating-total').each () ->
score = $(this).data('score')
$(this).raty({
haftShow: true,
score: score,
readOnly: true
})
$(document).ready(ready)
$(document).on('page:load', ready)
用于显示星星的文件
<div class="rating-total" data-id= <%= post.id %> data-score= <%= avg_score_for(post) %> >
</div>
<div class="total-score">
<%= avg_score_for post %>
</div>
html输出
<div class="rating-total" data-id= "1" data-score= "3.0" >
</div>
<div class="total-score">
3.0
</div>
答案 0 :(得分:0)
您是否通过ajax(旁边的turbolinks)插入或更新星形容器?然后你需要初始化raty,你现在只在页面加载时做。
我们直接渲染星星并更新得分和投票数如下:
initRatings: ->
$(".ajax_rating").each (i, el) ->
$(el).raty
readOnly: -> $(el).data("readonly") == true
score: -> $(el).data("rating")
click: (score, evt) ->
$.ajax
url: $(el).data("rateUrl").replace(":score", score)
success: (data) ->
$(el).raty("score", data.rating)
$("#ajax_rating_count").html("(#{data.count})")
我们的控制器只返回一个带有评级和投票数的json。