0

我使用的是 Rails 5.0 版,使用 raty js 出现这些错误

jquery.raty.self-628421be04f36f7a8fa8b9b884c6d7824d6f8bdeba4f172b131f15aa63f713e8.js?body=1:761 Uncaught ReferenceError: jQuery is not defined
    at jquery.raty.self-628421be04f36f7a8fa8b9b884c6d7824d6f8bdeba4f172b131f15aa63f713e8.js?body=1:761
(anonymous) @ jquery.raty.self-628421be04f36f7a8fa8b9b884c6d7824d6f8bdeba4f172b131f15aa63f713e8.js?body=1:761
2:131 Uncaught TypeError: $(...).raty is not a function
    at 2:131

我添加 raty JS 插件的代码如下。

<script>
$('.review-rating').raty({
    readOnly: true,
    score: function() {
        return $(this).attr('data-score');
    },
    path: '/assets/'
});

这与我的 show.html.erb 文件相对应,显示我的部分评论

<div class="review-rating" data-score="<%= review.rating %>"></div>
<p><%= review.comment %></p>


 <% if user_signed_in? %>

<% if review.user_id == current_user.id %>

<%= link_to "Edit", edit_book_review_path(review.book, review) %>
<%= link_to "Delete", book_review_path(review.book, review), method: :delete, data: {
confirm: "Are you sure?" } %>

<% end %>
<% end %>

jQuery 肯定在应用程序中,因为我已经添加了它并且我正在为某些需要 jQuery 的元素使用引导程序,这些元素都可以正常工作。

我已将 Raty 的图像添加到 app/assets/images 路径,并将 raty js 文件添加到 javascripts 文件夹。

任何关于为什么 Rails 不阅读 Raty 的见解???

谢谢

4

2 回答 2

0

我想到了。首先,将此添加到application.js文件的顶部

//= require jquery3
//= require jquery_ujs
//= require jquery.raty

接下来,从您的show.html.erb视图中包装您的 js 代码,$(document).ready如下所示:

$(document).ready(function() {
   $('.review-rating').raty({
   readOnly: true,
   score: function() {
     return $(this).attr('data-score');
   },
   path: '/assets/'
   });
});

最后,添加

<script src="/assets/jquery.js" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js" type="text/javascript"></script>

在你的application.html.erb上面<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

这应该可以解决问题,并且您应该会看到评论星!

于 2017-11-28T03:41:36.923 回答
0

看起来raty库未加载,但您尝试对其进行初始化。将您的代码包装到$(document).ready

$(document).ready(function() {
  $('.review-rating').raty({
      readOnly: true,
      score: function() {
          return $(this).attr('data-score');
      },
      path: '/assets/'
  });
});
于 2017-10-03T22:10:19.183 回答