Provides the best way to add rating capabilites to your Rails application with jQuery Raty plugin.
Find it at github.com/muratguzel/letsrate
Add the letsrate gem into your Gemfile
gem 'letsrate', '~> 1.0.9'
rails g letsrate User
The generator takes one argument which is the name of your existing user model UserModelName. This is necessary to bind the user and rating datas. Also the generator copies necessary files (jquery raty plugin files, star icons and javascripts)
Example:
Suppose you will have a user model which name is User. You could generate one with the devise generator:
rails g devise:install
rails g devise user
rails g letsrate user # => user is the model generated by devise
This generator will create Rate and RatingCache models and link to your user model.
I suppose you have a car model
rails g model car name:string
You have to include the Letsrate::Rateable concern in your car model to enable a one dimensional rating.
class Car < ActiveRecord::Base
include Letsrate::Rateable
end
You can also define multiple additional rating dimensions by using the rateable_dimensions class method.
class Car < ActiveRecord::Base
include Letsrate::Rateable
rateable_dimensions "speed", "engine", "price"
end
Then you need to include the Letsrate::Rater concern in the user model.
class User < ActiveRecord::Base
include Letsrate::Rater
end
There are two helper methods to render ratings:
You can user the rating_for helper method to show the average rating for a given object.
<%# show.html.erb -> /cars/1 %>
Rating : <%= rating_for @car %>
If you defined multiple rating dimensions you can pass them to the helper.
<%# show.html.erb -> /cars/1 %>
Speed : <%= rating_for @car, "speed" %>
Engine : <%= rating_for @car, "engine" %>
Price : <%= rating_for @car, "price" %>
If you need to change the star number, you should use star option like below.
Speed : <%= rating_for @car, "speed", :star => 10 %>
Speed : <%= rating_for @car, "engine", :star => 7 %>
Speed : <%= rating_for @car, "price" %>
You can use the user_rating_for helper method to show the star rating for a given user.
Speed : <%= user_rating_for @car, current_user, "speed", :star => 10 %>
If you find bugs please open a ticket at https://github.com/muratguzel/letsrate/issues