Rails 4:用coffeescript显示星星问题

时间:2014-05-04 14:52:49

标签: ruby-on-rails ruby-on-rails-4

昨天我问了另一个关于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>

1 个答案:

答案 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。