如何在Rails中创建数字评级系统?

时间:2012-01-15 22:54:31

标签: ruby-on-rails

我想在rails中创建数字评级系统,用户可以从 1 - 10 评价帖子。

我看过谷歌,但我只发现过时的教程和星级评级宝石,这些宝石根本不适合我。

也许有人能指出我可以帮助我实现这个目标的宝石吗?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

看看Letsrate gem:https://github.com/muratguzel/letsrate

非常适合我。