github
Advanced Search
  • Home
  • Pricing and Signup
  • Explore GitHub
  • Blog
  • Login

zachinglis / is_rateable

  • Admin
  • Watch Unwatch
  • Fork
  • Your Fork
  • Pull Request
  • Download Source
    • 51
    • 7
  • Source
  • Commits
  • Network (7)
  • Issues (0)
  • Downloads (0)
  • Wiki (1)
  • Graphs
  • Branch: master

click here to add a description

click here to add a homepage

  • Branches (1)
    • master ✓
  • Tags (0)
Sending Request…
Click here to lend your support to: is_rateable and make a donation at www.pledgie.com ! Edit Pledgie Setup

Pledgie Donations

Once activated, we'll place the following badge in your repository's detail box:
Pledgie_example
This service is courtesy of Pledgie.

Ratings for your model. — Read more

  cancel

http://zachinglis.com

  cancel
  • Private
  • Read-Only
  • HTTP Read-Only

This URL has Read+Write access

Fixing some bugs in README 
zachinglis (author)
Wed Jun 10 05:53:25 -0700 2009
commit  d85f30aa9d8643dd698c5f5aea3e238bdfbeb5d9
tree    4f8f9d65555f9771c2257a90dfc1332bfb79deda
parent  a81f1a0119b39afbe42d432153b07ee5897a3668
is_rateable /
name age
history
message
file MIT-LICENSE Thu Jul 17 08:50:36 -0700 2008 initial commit [zachinglis]
file README.textile Wed Jun 10 05:53:25 -0700 2009 Fixing some bugs in README [zachinglis]
file Rakefile Thu Jul 17 08:50:36 -0700 2008 initial commit [zachinglis]
directory generators/ Tue Jun 09 13:28:31 -0700 2009 Including spinner.gif Signed-off-by: Zach Ingl... [Mateus Linhares]
file init.rb Thu Jul 17 11:02:00 -0700 2008 Started work on the view helpers [zachinglis]
file install.rb Thu Jul 17 08:50:36 -0700 2008 initial commit [zachinglis]
directory lib/ Tue Jun 09 13:28:32 -0700 2009 Refactoring is_rateable Signed-off-by: Zach In... [Mateus Linhares]
directory tasks/ Thu Jul 17 08:50:36 -0700 2008 initial commit [zachinglis]
directory test/ Thu Jul 17 08:50:36 -0700 2008 initial commit [zachinglis]
file uninstall.rb Thu Jul 17 08:50:36 -0700 2008 initial commit [zachinglis]
README.textile

is_rateable

Currently star buttons are a put request, not a post request like they should be due to time constraints. Should be fixed in a future version.

Patches welcome! I do test my own stuff but until I find a nice and easy way to include rspec in plugins, they won’t come with the specs.

Usage

To install, type script/generate rateable [--by_user]

Options

—by-user will associate your ratings to a user model. Hopefully you’ve got one already.

Without Ajax
In your model.
<pre> is_rateable :upto => 5 # it defaults :upto => 5 </pre>

In your view.
<pre> render_rating(@book, :interactive_stars) render_rating(@book) # If you want to also see 1/5 Stars </pre>

If a user rates more than twice, it will delete their older rating and put up a new rating.

Add a method to your books_controller like so:
<pre> def rate @book = Book.find(params[:id]) unless @book.add_rating(params[:rating].to_i, :ip => request.remote_ip) flash[:notice] = "You have already voted on this book" end redirect_to @book end </pre>

Using Ajax

You can use the same code for your model
<pre> is_rateable :upto => 5 # it defaults :upto => 5 </pre>

On your view, you need to call a partial
<pre> #Using html.erb <div id="rating"> <%= render :partial => "books/rate", :locals => { :rateable => @book } %>

#Using haml #rating render :partial => “books/rate”, :locals => { :rateable => @book }

Your partial will have a spinner and a div to be replaced when ajax is completed
<pre> #Using html.erb (views/books/_rate.html.erb) <%= render_ajax_rating rateable %> <%= image_tag "icons/spinner.gif", :id => :spinner, :style => "display: none;" %> <div id="success_rating" style="display:none;"> Rated!

#Using haml (views/books/_rate.html.haml) = render_ajax_rating rateable = image_tag “icons/spinner.gif”, :id => :spinner, :style => “display: none;” #success_rating{:style => “display:none;”} Rated!

On your controller:
<pre> def rate @book = Book.find(params[:id]) @book.rate params[:rating].to_i render :update do |page| page.replace_html("rating", {:partial => "rate", :locals => {:rateable => @book}}) page.show "success_rating" end end </pre>

Todo

  • Annotate methods

Credits

  • Zach Inglis
  • Nathan Arnold
  • Les Hill
  • Matt Remsik
  • Tim Pope
  • Rogie King – CSS for Stars
  • Some code from restful_authentication by Rick Olson
Ajax Rating
  • Willian Molinari
  • Mateus Linhares

Copyright © 2008 Zach Inglis, released under the MIT license

Blog | Support | Training | Contact | API | Status | Twitter | Help | Security
© 2010 GitHub Inc. All rights reserved. | Terms of Service | Privacy Policy
Powered by the Dedicated Servers and
Cloud Computing of Rackspace Hosting®
Dedicated Server