我正在设置我的投票系统,并试图建立一个帮手模型,以便我可以检查用户是否投了票。我是新来的铁路,似乎无法找出这一个。如何获取Rails 4如果记录有两个条件返回true否则为false?
我该如何对user_id
的current_user
和card_id
的记录进行模型检查投票?
我也试图通过设置voted
变量来限制每次迭代_cards.html.erb
多次调用助手。不知道如何做到这一点,试图设置变量只是为每张卡片打印真实,即使是没有投票的卡片。
设置变量不起作用,既不是助手,因为它总是如此。
cards_controller.rb:
def if_voted(card_id)
if Vote.where(:user_id => current_user.id, :card_id => card_id) then
true
else
false
end
end
helper_method :if_voted
_cards.html.erb:
<td>
<%= @voted = if_voted(card.id) %>
<% if @voted == true %>
<span class="green"><center>
<% elsif @voted == false %>
<span class="red"><center>
<% else %>
<span class="gray"><center>
<% end %>
<%= card.up_votes - card.down_votes %>
</center></span>
</td>
随着@tadman的帮助
cards_controller.rb
def if_voted(card_id)
if Vote.where(:user_id => current_user.id, :card_id => card_id).any? then
@vote = Vote.find_by(:user_id => current_user.id, :card_id => card_id)
return @vote.voted
else
return nil
end
end
helper_method :if_voted
_cards.html.erb
<td>
<% @voted = if_voted(card.id) %>
<% if @voted == true %>
<span class="green"><center>
<% elsif @voted == false %>
<span class="red"><center>
<% else %>
<span class="gray"><center>
<% end %>
<%= card.up_votes - card.down_votes %>
</center></span>
</td>
谢谢