`
jsntghf
  • 浏览: 2530360 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

用acts_as_rateable实现简单的打分功能

阅读更多

acts_as_rateable插件为ActiveRecord模型对象提供评分/评级的功能,下面的示例是一个简单的打分功能。

 

1、安装插件

 

ruby script/plugin install svn://rubyforge.org/var/svn/rateableplugin/trunk

 

2、创建表

 

def self.up
  create_table :ratings do |t|
    t.integer :rating
    t.integer :rateable_id, :null => false
    t.string :rateable_type, :null => false
  end
  add_index :ratings, [:rateable_id, :rating]
end

def self.down
  drop_table :ratings
end

 

3、为模型增加打分功能

 

class Entry < ActiveRecord::Base

  acts_as_rateable

end

 

4、修改路由

 

map.resources :entries, :member => { :rating => :post }

 

5、增加打分表单

 

<% form_tag rating_entry_path(@entry) do %>
  请评分
  <% (1..5).each do |value| %>
    <%= radio_button_tag :rating, value, true %><%= value %>
  <% end %>
  <%= submit_tag '打分' %>
<% end %>

 

6、打分方法

 

def rating
  Entry.find(params[:id]).rating = params[:rating]
  redirect_to entries_url
end

 

7、显示打分结果

 

<%= h entry.rating %>

 

以上的示例只能为每个entry保留一个评分,如果希望能够多次评分,以获得平均分的话,可以在model中增加average参数:

 

class Entry < ActiveRecord::Base

  acts_as_rateable :average => true

end

 

打分界面也可以像下面这样来写:

 

<%= stars(@entry, :filled_star => "X", :empty_star => "x") do |content,rating,filled|
  link_to content, :controller => "entries", :action => "rating", :id => @entry.id, :rating => rating
end
%>

 

分享到:
评论

相关推荐

    acts_as_list.rar

    acts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_...

    acts_as_authenticated

    "acts_as_authenticated" 是一个经典的Ruby on Rails插件,它为Rails应用提供了用户认证功能。在Rails框架中,用户认证通常涉及验证用户身份、管理会话以及处理登录和登出等操作。acts_as_authenticated插件简化了这...

    acts_as_nps_rateable:Rails 4.x的一个宝石Ruby,实现了Net Promoter Score

    gem 'acts_as_nps_rateable' 如果要将此gem添加到rails 3应用程序,则应将行更改为: gem 'acts_as_nps_rateable', '=0.0.4' 然后执行: $ bundle 或将其自己安装为: $ gem install acts_as_nps_rateable 一旦...

    acts_as_list, 用于管理列表的ActiveRecord插件.zip

    acts_as_list, 用于管理列表的ActiveRecord插件 ActsAsList描述这个 acts_as 扩展提供了对列表中的多个对象进行排序和重新排序的功能。 具有指定的类的类需要在映射的数据库表上定义为整数的position 列。 0.8.0升级...

    acts_as_paranoid

    "acts_as_paranoid" 是一个在Ruby on Rails框架中常用的gem,用于处理数据库记录的软删除(soft delete)。在数据库操作中,通常我们会遇到删除数据的需求,但直接删除可能会导致数据丢失,尤其是在生产环境中。...

    acts_as_category:想想acts_as_tree +权限

    #ActsAsCategory acts_as_category (Version 2.0 beta)acts_as_category,是acts_as插件在acts_as_tree风格的Ruby on Rails的ActiveRecord的模式,但有一些额外的功能,以及多种便捷视图助手。例子(有关实例方法和...

    acts_as_nested_set的增强版BetterNestedSet

    acts_as_nested_set是Rails社区中广泛使用的Nested Set库,而BetterNestedSet则是它的增强版,提供了更多功能和优化。本文将深入探讨BetterNestedSet的原理、用法以及相较于acts_as_nested_set的优势。 1. Nested ...

    rails_admin_acts_as_list:rails_admin插件以对记录进行排序

    介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...

    Api-acts_as_api.zip

    Api-acts_as_api.zip,使在rails中创建api响应变得简单和有趣,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化了编程...

    acts_as_restful_list:就像acts_as_list一样,但很安静

    就像acts_as_list 一样,但不必使用非标准方法调用(如insert_at)来弄乱您的代码,acts_as_restful_list 使管理列表变得简单。 您可以像更新其他任何内容一样更新 position 属性,其余的都由您来处理。 特点 通过...

    acts_as_paranoid:ActiveRecord插件可让您隐藏和还原记录,而无需实际删除它们

    支持该分支仅针对Rails 5.2+和Ruby 2.4+ 如果您使用的是Rails 5.1或更早的版本,或者Ruby 2.3或更早的版本,请切换到相应的分支,或者需要一个更旧版本的acts_as_paranoid gem。已知的问题在同一模型上使用acts_as_...

    active_record-acts_as, 模拟activerecord模型的多表继承.zip

    active_record-acts_as, 模拟activerecord模型的多表继承 插件开发已经移动这个项目的积极发展已经转移到了的krautcomputing fork 。 请在那里报告问题并打开 PRs ! ActiveRecord::ActsAs这是对 acts_as_relation的...

    acts_as_liked:向任何 Active Record 模型添加类似功能

    gem 'acts_as_liked' 然后执行: $ bundle 运行生成器: $ rails generate acts_as_liked 并且不要忘记迁移您的数据库 $ rake db:migrate 用法 可爱的模特 将acts_as_likeable添加到任何模型,它的实例可以被...

    acts_as_shopping_cart:简单的购物车实施

    acts_as_shopping_cart 一个简单的购物车实现。 您可以找到示例应用程序。 安装 滑轨3 从0.2.0版开始,不再支持Rails 3。 如果您仍需要在Rails 3应用程序中实现此gem,请使用0-1-x分支 将其包含在您的Gemfile中 ...

    acts_as_xapian:Xapian全文搜索插件,适用于Ruby on Rails

    在实际使用中,acts_as_xapian的配置和使用相对简单。首先,需要安装Xapian库,然后在Gemfile中添加acts_as_xapian gem,并运行`bundle install`。接着,在模型中加入`acts_as_xapian`,并指定索引字段。最后,执行`...

    acts_as_commentable_with_threading:类似于acts_as_commentable; 然而,利用 awesome_nested_set 提供线程评论

    与acts_as_commentable 兼容(但需要更改数据库架构) 要求 此 gem 的 2.x 版本仅适用于 Rails 4 及更高版本。 对于此 gem 的 Rails 3.x 兼容版本,请使用版本 1.2.0。 这个宝石取决于 CollectiveIdea 的 Awesome ...

    acts_as_aliased:扩展 ActiveRecord

    使用acts_as_aliased在模型中启用别名: model Company &lt; ActiveRecord::Base acts_as_aliased end 这假设您的公司模型中有一个名为name的列。 您可以通过传递column参数来指定不同的column : model ...

    actions_as_commentable:ActiveRecord acts_as_commentable插件

    gem 'acts_as_commentable' Rails gem 'acts_as_commentable' , '3.0.1' Rails gem 'acts_as_commentable' , git: 'git@github.com:jackdempsey/acts_as_commentable.git' , branch: '2.x' 生成器 Rails 3+ ...

    acts_as_realtime:Gem 以简单的方式为您的索引添加实时功能

    这个gem的使用很简单,你只需要在我们想要的带有实时索引的模型中执行acts_as_realtime方法,该方法可以携带一系列参数来稍微修改行为和其他强制性参数,但这些将是后面解释了,另外一步就是在视图中插入必要的代码...

Global site tag (gtag.js) - Google Analytics