2013-02-18 58 views
0

我想在我的食譜應用程序中添加一個星級評分系統,每個用戶可以評價一次不同的食譜。我已經讀過Jquery的速度,這是一個很好的開始。 http://www.radioactivethinking.com/rateit/example/example.htm我的問題是關於如何得到這個在軌道3的工作,我最初的想法是Rails 3和Jquery的rateit插件

設置的評級模型,它看起來像這樣

class Rating < ActiveRecord::Base 

has_many :recipes 
has_many :users 
attr_accessible :recipe_id, :user_id, :number 
validates_uniqueness_of :user_id, :scope => :recipe_id 
end 

建立模型關係

class Recipe < ActiveRecord::Base 

has_many :ratings 
end 

class User < ActiveRecord::Base 

has_many :ratings 
end 

控制器

class RatingsController < ApplicationController 

def new 
@rating = Rating.new 
end 

def create 
@rating = Rating.new(params[:rating]) 
    if @rating.save 
    redirect_to my_recipes_path, :notice => "Thanks #{current_user.name} Recipe successfully Rated." 
end 

正如前面提到的,我正在思考使用jQuery插件rateit,它可以使用HTML範圍輸入的

<input type="range" min="0" max="5" value="0" step="0.5" id="backing2"> 
<div class="rateit" data-rateit-backingfld="#backing2"></div> 

我的想法是,提交星級到我需要提交的值作爲隱藏域的模型,類似的東西

<%= form_for @rating do |f| %> 
<%= f.hidden_field :user_id, :value => current_user.id %> 
<%= f.hidden_field :recipe_id, :value => recipe.id %> 
<%= f.submit 'Rate Recipe' %> 
<% end %> 

我不知道的是如何將給定值賦予模型。我想通過Ajax請求來實現這一點。

我的關聯可能不正確,因爲我的許多代碼可能?從未接觸過走近這樣的事情,我希望有人能指出我在正確的directoion或者至少指出我的錯誤,到目前爲止

感謝

回答

2

之前如何使用Rateit寶石

https://github.com/ouvrages/rails-rateit

我沒有使用它,但只是做了一個谷歌的「Rateit寶石」,這是最受歡迎的。

+0

寧願不要使用寶石,想要充分理解這個過程與Ajax的結合,以及如何點擊說第三顆星,並將值3發佈到模型 – Richlewis 2013-02-18 13:28:51