如何不允许特定用户使用ratyrate gem进行评级

时间:2015-03-19 05:21:18

标签: ruby-on-rails-4

我在我的rails应用程序中使用ratyrate gem进行评级。 有用户可以购买或出售他的书籍。 但是用户无法评价他自己的书(由同一用户上传)。

当我重新加载页面时,它只显示评级。 如何在没有重新加载的情况下显示按钮点击的评级.....

用户模型。

class User < ActiveRecord::Base
  ratyrate_rater
end

预订模型。

class Book < ActiveRecord::Base
  ratyrate_rateable "price_for_sale"
end

书籍/ index.html.erb。

<div class="row">
  <div class="col-md-8">
      <table class="cls_book_details" cellspacing="0" cellspacing="0">  
        <tr>
            <%@count =1 %>
            <% @books.each do |book| %>
                <td id="book_details" style="text align:left;"><%=link_to(image_tag(book.book_photos.first.photo.url(:thumb), :title => 'Click for edit'), edit_book_path(book.id))%><br>
                    Book Title : <%= book.book_name %><br>
                    Author : <%= book.book_auther %><br>
                    <%= rating_for book, "price_for_sale", :enable_half => true %><br/><br>
                    </td>
                <%@count += 1 %>
                <%if @count == 4%>
                    <% @count =1 %>
                    </tr>
                    <tr>
                <%end %>
            <% end %>
        </tr>
    </table>
</div>

1 个答案:

答案 0 :(得分:2)

为此,您应该与您的图书用户一起检查您的登录用户。如果它们相同,那么就这样阻止他

if obj.user.id == current_user.id
  flash[:alert] = "You can not rate your own book"
else
  obj.rate params[:score].to_f, current_user, params[:dimension]
end

你的第二个问题是使用ajax不重新加载页面。

有关导轨http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

中AJAX的详细信息

这是一个很好的例子 http://code.tutsplus.com/tutorials/using-unobtrusive-javascript-and-ajax-with-rails-3--net-15243