Как мне создать систему числовых рейтингов в Rails? - PullRequest
3 голосов
/ 16 января 2012

Я хотел бы создать числовую систему рейтингов в рельсах, где пользователи могут оценивать пост от 1 - 10 .

Я смотрел в Google, но я нахожу только устаревшие учебники и драгоценности звездного рейтинга, которые просто не делают работу за меня.

Возможно, кто-то может указать мне драгоценный камень, который может помочьмне добиться этого?

Ответы [ 2 ]

6 голосов
/ 16 января 2012

Ruby Toolbox перечисляет несколько, хотя большинство из них DOA.Mongoid_ratings, казалось, был самым последним обновленным, хотя вы, возможно, не хотите идти по маршруту Mongo.

https://www.ruby -toolbox.com / Categories / rails_ratings

Iпредложил бы строить с нуля.Вот быстрый (и, вероятно, нефункциональный / небезопасный) взлом, который может помочь вам начать:

Маршруты

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 голос
/ 24 января 2013

Посмотрите на камень Letsrate: https://github.com/muratguzel/letsrate

Прекрасно работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...