1

我的观点中有这个块:

<% video.members.each do |p| %>
  <% if p.id == current_user.id %>
    <%= "paid" %>
  <% end %>
<% end %>

基本上,我正在尝试根据 id 是否匹配来确定成员是否为视频付费。

也许这是一种非常糟糕的方法,在这种情况下我很乐意尝试不同的方法。

假设这是检查这个的好方法,我怎么能写一个类似的语句,但作为一个辅助方法? 我已经尝试过了,但似乎你不能在助手中编写相同的逻辑,因为块只会吐出完整的数组而不是 id,这意味着它不起作用。

4

1 回答 1

3

你应该这样做:

<% if video.members.exists?(id: current_user.id) %>
  <%= 'Paid' %>
<% end %>

这将生成一个查询来测试视频是否已由 current_user 支付;-)


在助手中:

# application_helper.rb
def display_paid_or_not(video)
  return '' if video.blank? # similar to .nil?
  video.members.exists?(id: current_user.id) ? 'Paid' : ''
end

# in view
<%= display_paid_or_not(video) %> 

希望这可以帮助!

于 2013-10-21T14:53:23.020 回答