【发布时间】:2012-01-15 22:54:30
【问题描述】:
我想在 Rails 中创建一个数字评分系统,用户可以在其中从 1 到 10 对帖子进行评分。
我在 Google 上查看过,但我只发现过时的教程和星级评定宝石,它们根本不适合我。
也许有人可以为我指出一个可以帮助我实现这一目标的宝石?
【问题讨论】:
标签: ruby-on-rails
我想在 Rails 中创建一个数字评分系统,用户可以在其中从 1 到 10 对帖子进行评分。
我在 Google 上查看过,但我只发现过时的教程和星级评定宝石,它们根本不适合我。
也许有人可以为我指出一个可以帮助我实现这一目标的宝石?
【问题讨论】:
标签: ruby-on-rails
Ruby Toolbox 列出了几个,尽管大多数是 DOA。 Mongoid_ratings 似乎是最近更新的,尽管您可能不想走 Mongo 路线。
https://www.ruby-toolbox.com/categories/rails_ratings
我建议从头开始构建。这里有一个快速(可能是非功能性/不安全)的黑客,可能会帮助您入门:
路线
resources :articles do
resources :ratings
end
模型
class Article < ActiveRecord::Base
has_many :ratings, :dependent => :destroy
end
class Rating < ActiveRecord::Base
belongs_to :article
validates_presence_of :article
validates_inclusion_of :value, :in => 1..10
end
控制器
class RatingsController < ApplicationController
before_filter :set_article
def create
@rating = @article.ratings.new :value => params[:value]
if @rating.save
redirect_to article_ratings_path(@article), :notice => "Rating successful."
else
redirect_to article_ratings_path(@article), :notice => "Something went wrong."
end
end
def update
@rating = Rating.find(params[:id])
@rating.update_attribute :value, params[:value]
end
private
def set_article
@article = Article.find(parms[:article_id])
end
end
在某处的文章视图中:
form_for [@article,@rating] do |f|
f.select("rating", "value", (1..10))
f.submit "Rate this Article"
end
【讨论】:
看看 Letsrate gem:https://github.com/muratguzel/letsrate
非常适合我。
【讨论】: