Rails 3 rateable模型 – 如何创建ajax评级?

如何在此页面上创建一些简单的ajax评级http://watir.com/documentation/ ? 每个访问者都应该能够评分,我不需要设置权限。 我想将评级存储在一列中。 因此用户可以按评级排序。 请做一个详细的例子。 我不是一个JavaScript专家。

我找到了一个从头开始创建评级的示例。 但它授权用户。 有人可以向我展示如何在没有Rater(用户)的情况下创建评级吗? 它不仅应存储值,还应计算投票数。

http://eighty-b.tumblr.com/post/1569674815/creating-an-ajaxified-star-rating-system-in-rails-3

我最近为现有项目添加简单评级机制的做法如下:

我在现有表中添加了两个字段(其中包含要评级的项目)。 那些是:

rating_score => The current score ratings => The number of ratings which led to the score 

例如,如果五个用户对当前项目投了“5”,则rating_score将为25,评级为5.当前评级将计算为rating_score / ratings

然后我向控制器添加了一个新的方法来评估被称为“速率”的项目,它看起来像:

 def rate @item = Item.find(params[:id]) @container = "item"+@item.id.to_s @item.rating_score += params[:rating].to_i @item.ratings += 1 @item.save respond_to do |format| format.js end end 

我对该方法的看法,称为rate.js.erb ,看起来像

 $('#<%= @container %>').html('<%= escape_javascript(render(partial: 'rating', locals: { item: @item })) %>'); 

此代码仅在您安装了jQuery时才有效,但它应该可以轻松转换为Prototype或您可能正在使用的任何JS框架。

评级的部分名为_rating.html.erb ,如下所示:

 <%= form_tag url_for(controller: 'items', action: 'rate', id: item.id), remote: true %> <%= rating_stars(item.rating_score, item.ratings) %> <%= item.ratings %> Votes  

在这部分中, rating_stars()辅助方法为评级生成了某种类似星形的表示,但是您可以随意执行此操作。

通过在form_tag帮助器中设置“remote:true”,您的Rails安装应该通过已安装的Javascript框架自动传输请求。 这个魔法是最近在Rails中发生的整个不引人注目的javascript事情的一部分,实际上非常酷。

希望这能让您了解如何实现一个非常简单的评级系统在Rails中没有任何IP锁定function

看起来Watir文档评级系统是通过polldaddy建立的 。

对于这种特殊情况,它似乎包括polldaddy javascript,它用他们的星级小部件填充评级div容器。 看起来有一个相应的javascript对象,您可以检查:

 console.log( PDRTJS_101132_page_2.avg_rating ); //=> 4 

如果你在页面上有很多这样的评级小部件,并且你能够创建一个与他们的div配对的javascript对象的集合,大概你可以根据这个平均评级属性对它们进行排序。