0

我想在我的食谱应用程序中添加一个星级评分系统,每个用户可以对不同的食谱评分一次。我已经阅读了 Jquery 的速率,这是一个很好的起点。http://www.radioactivethinking.com/rateit/example/example.htm我的问题是关于如何让它在 Rails 3 中工作,我最初的想法是

设置一个看起来像这样的评级模型

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 请求来实现这一点。

我的关联可能不正确,因为我的很多代码可能?在我希望有人能指出我正确的方向或至少指出我迄今为止的错误之前从未接触过这样的事情

谢谢

4

1 回答 1

2

使用 The Rateit Gem 怎么样

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

我没有使用它,只是在谷歌上搜索了“Rateit Gem”,这是最热门的。

于 2013-02-18T12:31:53.207 回答