rails:用户upvoted pin(存在?关系)

时间:2014-10-28 21:50:20

标签: ruby-on-rails ruby vote vote-up-buttons

所以我在我的rails应用程序中有一个非常简单的upvote系统,它允许用户提升一个引脚:

pins_controller.rb

def upvote
  @pin = Pin.friendly.find(params[:id])

  if @pin.votes.create(user_id: current_user.id)
     flash[:notice] =  "Thanks for your recommendation."
    redirect_to(pin_path)
  else 
    redirect_to(pin_path)
  end
end

在我看来,他们可以通过点击按钮(由图标表示)来进行投票: 在app / views / pins / index.html.erb

<%= link_to upvote_pin_path(pin), method: :post do %>
   <span class="text-decoration: none;"><i class="fa fa-chevron-up"></i>
<% end %>
<%= pluralize(pin.votes.count, "") %></span>

如果用户已经提升了引脚,我想以不同的颜色呈现图标: 所以我想过使用exists?:

<%= link_to upvote_pin_path(pin), method: :post do %>

      <% if pin.votes.where(user_id: current_user.id).exists? %>
            <i class="fa fa-chevron-up" style="color:red"></i>
      <% else %>
            <i class="fa fa-chevron-up"></i>
      <% end %>
<% end %>

但是不起作用,相反所有的图标都显示为红色,任何想法?

1 个答案:

答案 0 :(得分:0)

问题是您正在检查表是否存在(请查看exists? documents)。

您要做的是检查它是empty?