Vote Feature

Terminal
ruby script/generate model Vote

Migration
class CreateVotes < style="font-weight: bold;">Terminal
rake db:migrate

Model
class Info < style="font-weight: bold;">Views/layouts/application.html.erb
<%= javascript_include_tag :defaults %>

Views/show.html.erb

Controller
def vote
@info = Info.find(params[:id])
@user = User.find(session[:user_id])
@info.votes.create(:user => @user)
end

Views/infos/vote.rjs
page.replace_html 'vote_score', "Votes: #{@info.votes.count}"
page[:vote_score].visual_effect :highlight


Vote Once

Controller
def vote
@info = Info.find_by_nickname(params[:id])
@user = User.find(session[:user_id])

if Vote.exists?(@info, @user)
flash[:notice] = 'One vote per user.'
else
@info.votes.create(:user => @user)
end

respond_to do |format|
format.html { redirect_to @info }
format.js
end
end

private
def Vote.exists?(info, user)
not find_by_info_id_and_user_id(info, user).nil?
end

0 comments:

Post a Comment