铁轨星级评级系统 - ajaxful-rating

时间:2012-09-03 01:07:13

标签: ruby-on-rails ajax rating

我正在尝试在我的rails应用程序中实施星级评分系统。我选择使用ajaxful-rating gem。

  • 我已经安装了Gem
  • 我已经运行了脚本
  • 我在我的装备模型中添加了ajaxful_rateable以对其进行评级。
  • 我已将ajaxful_rater添加到我的用户模型中以启用对其他项目的评分。

我没有完全通过安装,因为我遇到了路线错误。我需要知道我在路线或数据库上做错了什么。根据gem上的说明,我似乎不需要扩充数据库,除非缓存平均评级。但是当我尝试访问视图时,我收到以下错误

Mysql2::Error: Table 'equiptme.rates' doesn't exist: SHOW FULL FIELDS FROM `rates`

请帮忙。我的代码如下。

路线

  resources :gears, :member => {:rate => :post} do
    resources :calendars, :only => [:create, :destroy, :edit] 
    resources :comments, :only => [:create, :destroy] 
  end

查看

        <% @comments.each do |comment| %>
            <div style="width: 99%; min-height: 190px; margin-bottom: 30px; border-bottom: 1px dotted #DAD9D9;">
                  <div style="width: 17%; float: left; overflow: hidden; margin-left: 10px; text-align: center; font-size: 14px; ">
                    <div class="gearcomments_userpic_container"><%= image_tag comment.user.userimage.url(:comments), :class => "gearcomments_userpic" %></div></br>
                    <%= comment.user.name %> 
                  </div>
                  <div style="width: 55%; float: left; margin-left: 10px; font-size: 13px;">
                    <%= comment.body %> 
                  </div> 
                  <div style="width: 15%; float: left; text-align: center;">
                     <h4>Overall Rating</h4></br>
                     <%= ratings_for @gear, :show_user_rating => true %>
                     <div></div></br>
                     <% # display delete link only for comments written by this particular user %>
                     <% if user_signed_in? and comment.user_id == current_user.id %>
                         <span><%= link_to 'delete', gear_comment_path(@gear, comment), :confirm => 'Are you sure?', :method => :delete, :class => "" %></span>
                     <% end %>          
                  </div>
            </div>       
        <% end %>

齿轮模型

class Gear < ActiveRecord::Base
  ...
  ajaxful_rateable :stars => 6, :allow_update => true
end

用户模型

class User < ActiveRecord::Base 
 ...
  ajaxful_rater
end

1 个答案:

答案 0 :(得分:2)

您缺少数据库中的表(可能是gem需要的)。您确定已迁移数据库吗?

您必须运行可能会生成迁移的脚本,但您还必须:

rake db:migrate

bundle exec rake db:migrate,如果需要。


确保您已运行生成脚本(来自README):

script/generate ajaxful_rating UserModelName
     

生成器接受一个参数:UserModelName,它的名称是   您当前的用户模型。这是连接费率和   用户模型。

     

此生成器也会复制必要的图像,样式等。

     

示例:我猜您已经生成了经过身份验证的模型...

script/generate authenticated user sessions
script/generate ajaxful_rating user
     

因此,此调用将创建一个Rate模型,并将其链接到您的用户   模型。

README中的这一部分肯定意味着生成了迁移。