如何在此页http://watir.com/documentation/上创建一些简单的ajax评级?每个访问者都应该能够评分,我不需要设置权限。我想将评级存储在一列中。因此用户可以按评级排序。 请做一个详细的例子。我不是javascript专家。
我找到了一个从头开始创建评级的示例。但它授权用户。 有人可以给我一个指导,在没有Rater(用户)的情况下创建评级吗?它不仅应存储值,还应计算投票数。
http://eighty-b.tumblr.com/post/1569674815/creating-an-ajaxified-star-rating-system-in-rails-3
答案 0 :(得分:4)
我最近为现有项目添加简单评级机制的做法如下:
我在现有表格中添加了两个字段(其中包含要评分的项目)。那些是:
rating_score => The current score
ratings => The number of ratings which led to the score
例如,如果五个用户对当前项目投了“5”,则rating_score
将为25,评级为5.当前评级将计算为rating_score / ratings
。< / p>
然后我在控制器中添加了一个新方法,用于评级,称为“速率”,看起来像是:
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框架。
评级的partial名为_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
</form>
在这个部分中,rating_stars()
辅助方法为评级生成了某种类似星形的表示,但是你可以随心所欲地做到这一点。
通过在form_tag帮助器中设置“remote:true”,您的Rails安装应该通过已安装的Javascript框架自动传输请求。这个魔法是Rails最近发生的整个unobtrusive javascript事情的一部分,实际上非常酷。
希望这能让您了解如何在Rails中实现一个非常简单的评级系统,而无需任何IP锁定功能。
答案 1 :(得分:0)
看起来Watir文档评级系统是通过polldaddy设置的。
对于这种特殊情况,它似乎包括polldaddy javascript,它用他们的星级小部件填充评级div容器。看起来有一个相应的javascript对象,您可以检查:
console.log( PDRTJS_101132_page_2.avg_rating ); //=> 4
如果你在页面上有很多这样的评级小部件,并且你能够制作一个与他们的div配对的javascript对象的集合,大概你可以根据这个平均评级属性对它们进行排序。